Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-05-2007, 15:17   #1
niko_lol
Member
 
Iscritto dal: Mar 2007
Messaggi: 276
[C++] Non capisco che cavolo fanno! HELP!

ciao raga..... non capisco che fanno queste istruzioni:

- #define RPC_STRING [unique, string] WCHAR *
- #define RPC_SIZE(X) [size_is(x)]

dopo qualche altra riga di codice le riscrive ma senza il codice nelle perentesi quadre!

Che vuol dire? HELP!

Grazie!
niko_lol è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:26   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Posta un po' come vengono usate quelle macro nel codice...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:30   #3
niko_lol
Member
 
Iscritto dal: Mar 2007
Messaggi: 276
VI posto tutto il file! help! grazie!


/*
* ESEBCLI2.H
*
* Microsoft Exchange
* Copyright (C) 1986-1996, Microsoft Corporation
*
* Contains declarations of additional definitions and interfaces
* for the ESE Online Backup Client APIs.
*/
#ifndef _ESEBCLI2_
#define _ESEBCLI2_

#include <stdio.h>
#include <time.h>

#include "esebkmsg.h" // included for the definition of errors


// Common types
typedef long ERR;
typedef void *HCCX; // client context handle

#ifdef MIDL_PASS

#define RPC_STRING [unique, string] WCHAR *
#define RPC_SIZE(X) [size_is(X)]

#else // ! MIDL_PASS


#include <objbase.h>
#include <initguid.h>
#include <mapiguid.h>

typedef long HRESULT;
#if !defined(_NATIVE_WCHAR_T_DEFINED)
typedef unsigned short WCHAR;
#else
typedef wchar_t WCHAR;
#endif

#define RPC_STRING WCHAR *
#define RPC_SIZE(X)

#define IN
#define OUT

#endif // MIDL_PASS


#define ESEBACK_API __stdcall

#ifdef __cplusplus
extern "C" {
#endif


typedef struct _ESE_ICON_DESCRIPTION
{
unsigned long ulSize;
RPC_SIZE(ulSize) char * pvData;
} ESE_ICON_DESCRIPTION;


#define DATABASE_MOUNTED 0x00000010

typedef struct _DATABASE_BACKUP_INFO
{
RPC_STRING wszDatabaseDisplayName;

unsigned long cwDatabaseStreams;
RPC_SIZE(cwDatabaseStreams) WCHAR * wszDatabaseStreams;

GUID guidDatabase;
unsigned long ulIconIndexDatabase;
unsigned long fDatabaseFlags;

} DATABASE_BACKUP_INFO;

typedef struct _INSTANCE_BACKUP_INFO
{
__int64 hInstanceId;
RPC_STRING wszInstanceName;
unsigned long ulIconIndexInstance;

unsigned long cDatabase;
RPC_SIZE(cDatabase) DATABASE_BACKUP_INFO * rgDatabase;

unsigned long cIconDescription;
RPC_SIZE(cIconDescription) ESE_ICON_DESCRIPTION * rgIconDescription;

} INSTANCE_BACKUP_INFO;

//
// Type of backup passed into HrESEBackupSetup()
//

#define BACKUP_TYPE_FULL 0x01
#define BACKUP_TYPE_LOGS_ONLY 0x02
#define BACKUP_TYPE_FULL_WITH_ALL_LOGS 0x03
#define BACKUP_TYPE_SNAPSHOT 0x04


typedef struct _ESE_REGISTERED_INFO
{
RPC_STRING wszDisplayName;
RPC_STRING wszEndpointAnnotation;
unsigned long fFlags;
ESE_ICON_DESCRIPTION iconDescription;
} ESE_REGISTERED_INFO;


#define ESE_REGISTER_BACKUP 0x00000001
#define ESE_REGISTER_ONLINE_RESTORE 0x00000002
#define ESE_REGISTER_OFFLINE_RESTORE 0x00000004

#define ESE_REGISTER_SNAPSHOT_BACKUP 0x00000010


HRESULT ESEBACK_API HrESEBackupRestoreGetRegistered(
IN WCHAR * wszServerName,
IN WCHAR * wszDisplayName,
IN unsigned long fFlags,
OUT unsigned long * pcRegisteredInfo,
OUT ESE_REGISTERED_INFO ** paRegisteredInfo
);

void ESEBACK_API ESEBackupRestoreFreeRegisteredInfo(
IN unsigned long cRegisteredInfo,
IN ESE_REGISTERED_INFO * aRegisteredInfo);

HRESULT ESEBACK_API HrESEBackupPrepare(
IN WCHAR * wszBackupServer,
IN WCHAR * wszBackupAnnotation,
OUT unsigned long * pcInstanceInfo,
OUT INSTANCE_BACKUP_INFO ** paInstanceInfo,
OUT HCCX * phccxBackupContext
);

HRESULT ESEBACK_API HrESEBackupSetup(
IN HCCX hccxBackupContext,
IN __int64 hInstanceId,
IN unsigned long btBackupType
);

HRESULT ESEBACK_API HrESEBackupTruncateLogs(
IN HCCX hccxBackupContext
);

HRESULT ESEBACK_API HrESEBackupGetDependencyInfo(
IN HCCX hccxBackupContext,
OUT WCHAR ** pwszInfo,
OUT unsigned long * pcwInfo,
OUT WCHAR ** pwszAnnotation
);

HRESULT ESEBACK_API HrESEBackupOpenFile (
IN HCCX hccxBackupContext,
IN WCHAR * wszFileName,
IN unsigned long cbReadHintSize,
IN unsigned long cSections,
OUT void ** rghFile,
OUT __int64 * rgliSectionSize
);

HRESULT ESEBACK_API HrESEBackupReadFile(
IN HCCX hccxBackupContext,
IN void * hFile,
IN void * pvBuffer,
IN unsigned long cbBuffer,
OUT unsigned long * pcbRead
);

HRESULT ESEBACK_API HrESEBackupCloseFile(
IN HCCX hccxBackupContext,
IN void * hFile
);

HRESULT ESEBACK_API HrESEBackupGetLogAndPatchFiles(
IN HCCX hccxBackupContext,
IN WCHAR ** pwszFiles
);

HRESULT ESEBACK_API HrESEBackupGetTruncateLogFiles(
IN HCCX hccxBackupContext,
IN WCHAR ** pwszFiles
);

void ESEBACK_API ESEBackupFreeInstanceInfo(
IN unsigned long cInstanceInfo,
IN INSTANCE_BACKUP_INFO * aInstanceInfo
);

void ESEBACK_API ESEBackupFree(
IN void * pvBuffer
);

#define ESE_BACKUP_INSTANCE_END_ERROR 0x00000000
#define ESE_BACKUP_INSTANCE_END_SUCCESS 0x00000001

HRESULT ESEBACK_API HrESEBackupInstanceEnd(
IN HCCX hccxBackupContext,
IN unsigned long fFlags
);

HRESULT ESEBACK_API HrESEBackupEnd(
IN HCCX hccxBackupContext
);

// Restore client APIs

typedef enum
{
recoverInvalid = 0,
recoverNotStarted = 1,
recoverStarted = 2,
recoverEnded = 3,
recoverStatusMax
}
RECOVER_STATUS;


typedef struct _RESTORE_ENVIRONMENT
{
WCHAR * m_wszRestoreLogPath;

WCHAR * m_wszSrcInstanceName;

unsigned long m_cDatabases;
WCHAR ** m_wszDatabaseDisplayName;
GUID * m_rguidDatabase;

WCHAR * m_wszRestoreInstanceSystemPath;
WCHAR * m_wszRestoreInstanceLogPath;
WCHAR * m_wszTargetInstanceName;

WCHAR ** m_wszDatabaseStreamsS;
WCHAR ** m_wszDatabaseStreamsD;

unsigned long m_ulGenLow;
unsigned long m_ulGenHigh;
WCHAR * m_wszLogBaseName;

time_t m_timeLastRestore;

RECOVER_STATUS m_statusLastRecover;
HRESULT m_hrLastRecover;
time_t m_timeLastRecover;

WCHAR * m_wszAnnotation;

} RESTORE_ENVIRONMENT;

HRESULT ESEBACK_API HrESERestoreLoadEnvironment(
IN WCHAR * wszServerName,
IN WCHAR * wszRestoreLogPath,
OUT RESTORE_ENVIRONMENT ** ppRestoreEnvironment);

void ESEBACK_API ESERestoreFreeEnvironment(
IN RESTORE_ENVIRONMENT * pRestoreEnvironment);


HRESULT ESEBACK_API HrESERestoreOpen(
IN WCHAR * wszServerName,
IN WCHAR * wszServiceAnnotation,
IN WCHAR * wszSrcInstanceName,
IN WCHAR * wszRestoreLogPath,
OUT HCCX * phccxRestoreContext);

HRESULT ESEBACK_API HrESERestoreReopen(
IN WCHAR * wszServerName,
IN WCHAR * wszServiceAnnotation,
IN WCHAR * wszRestoreLogPath,
OUT HCCX * phccxRestoreContext);


void ESEBACK_API ESERestoreFree( IN void *pvBuffer );


#define RESTORE_CLOSE_ABORT 0x1
#define RESTORE_CLOSE_NORMAL 0x0

HRESULT ESEBACK_API HrESERestoreClose(
IN HCCX hccxRestoreContext,
IN unsigned long fRestoreAbort);

HRESULT ESEBACK_API HrESERestoreAddDatabase(
IN HCCX hccxRestoreContext,
IN WCHAR * wszDatabaseDisplayName,
IN GUID guidDatabase,
IN WCHAR * wszDatabaseStreamsS,
OUT WCHAR ** pwszDatabaseStreamsD);

HRESULT ESEBACK_API HrESERestoreGetEnvironment(
IN HCCX hccxRestoreContext,
OUT RESTORE_ENVIRONMENT ** ppRestoreEnvironment);

HRESULT ESEBACK_API HrESERestoreSaveEnvironment(
IN HCCX hccxRestoreContext);


#define ESE_RESTORE_COMPLETE_ATTACH_DBS 0x00000001
#define ESE_RESTORE_COMPLETE_START_SERVICE ESE_RESTORE_COMPLETE_ATTACH_DBS

#define ESE_RESTORE_COMPLETE_NOWAIT 0x00010000
#define ESE_RESTORE_KEEP_LOG_FILES 0x00020000


HRESULT ESEBACK_API HrESERestoreComplete(
IN HCCX hccxRestoreContext,
IN WCHAR * wszRestoreInstanceSystemPath,
IN WCHAR * wszRestoreInstanceLogPath,
IN WCHAR * wszTargetInstanceName,
IN unsigned long fFlags);

HRESULT ESEBACK_API HrESERestoreAddDatabaseNS(
IN HCCX hccxRestoreContext,
IN WCHAR * wszDatabaseDisplayName,
IN GUID guidDatabase,
IN WCHAR * wszDatabaseStreamsS,
IN WCHAR * wszDatabaseStreamsD);


HRESULT ESEBACK_API HrESERestoreOpenFile (
IN HCCX hccxRestoreContext,
IN WCHAR * wszFileName,
IN unsigned long cSections,
OUT void ** rghFile
);

HRESULT ESEBACK_API HrESERestoreWriteFile(
IN HCCX hccxRestoreContext,
IN void * hFile,
IN void * pvBuffer,
IN unsigned long cbBuffer
);

HRESULT ESEBACK_API HrESERestoreCloseFile(
IN HCCX hccxRestoreContext,
IN void * hFile
);

/* function used to find the computers to be queried for backup/restore */
/* MAD like behaviour */
#define BACKUP_NODE_TYPE_MACHINE 0x00000001
#define BACKUP_NODE_TYPE_ANNOTATION 0x00000010
#define BACKUP_NODE_TYPE_DISPLAY 0x00000100

typedef struct _BACKUP_NODE_TREE
{
RPC_STRING wszName;
unsigned long fFlags;
ESE_ICON_DESCRIPTION iconDescription;

struct _BACKUP_NODE_TREE * pNextNode;
struct _BACKUP_NODE_TREE * pChildNode;

} BACKUP_NODE_TREE, * PBACKUP_NODE_TREE;


HRESULT ESEBACK_API HrESEBackupRestoreGetNodes(
IN WCHAR * wszComputerName,
OUT PBACKUP_NODE_TREE * ppBackupNodeTree);

void ESEBACK_API ESEBackupRestoreFreeNodes(
IN PBACKUP_NODE_TREE pBackupNodeTree);



// Specific errors that can be returned by callback functions

// Database to be restored is in use
#define hrFromCB_DatabaseInUse hrCBDatabaseInUse

// Database not found
#define hrFromCB_DatabaseNotFound hrCBDatabaseNotFound

// Display name for the database not found
#define hrFromCB_DatabaseDisplayNameNotFound hrCBDatabaseDisplayNameNotFound

// Requested path for restore log files not provided
#define hrFromCB_RestorePathNotProvided hrCBRestorePathNotProvided

// Instance to backup not found
#define hrFromCB_InstanceNotFound hrCBInstanceNotFound

// Database can not be overwritten by a restore
#define hrFromCB_DatabaseCantBeOverwritten hrCBDatabaseCantBeOverwritten

// snapshot API

HRESULT ESEBACK_API HrESESnapshotStart(
IN HCCX hccxBackupContext,
IN WCHAR * wszDatabases,
IN unsigned long fFlags );


HRESULT ESEBACK_API HrESESnapshotStop( IN HCCX hccxBackupContext,
IN unsigned long fFlags );

#ifdef __cplusplus
}
#endif

#endif // _EDBBCLI2_
niko_lol è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:43   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Come vedi quella dichiarazione viene fatta solo se è definita MIDL_PASS cioè l'header sta venendo letto dal linguaggio per la definizione delle interfacce di Microsft: http://msdn2.microsoft.com/en-us/library/aa367091.aspx

Puoi vedere il significato di unique, string, size_is qui: http://msdn2.microsoft.com/en-us/library/aa367088.aspx

Quindi non si tratta di C++, ma di un preprocessore Microsft usato per la definizione delle interfacce...infatti nel caso MIDL_PASS non sia definita, il tipo RPC_STRING viene semplicemente definito come WCHAR * ed è così che lo interpreta il C++...

Addirittura IN, OUT e RPC_SIZE(X) sono "vuoti" quando vengono letti dall'inteprete C++...

Quando usi
#define XYZ xxxx

il preprocessore del compilatore sostituisce a tutti gli "XYZ" trovati nel codice "xxxx"...

Ultima modifica di cionci : 17-05-2007 alle 15:46.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:48   #5
niko_lol
Member
 
Iscritto dal: Mar 2007
Messaggi: 276
RPC_STRING ok...l' ho capito. Ma RPC_SIZE che cavolo FA?

grazie!
niko_lol è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:52   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Stesso discorso...hanno un significato per IDL, ma non per C++ (è vuoto quando) il file viene letto dal compilatore C++...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 15:54   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
#ifdef MIDL_PASS

#define RPC_STRING [unique, string] WCHAR *
#define RPC_SIZE(X) [size_is(X)]

#else // ! MIDL_PASS


#include <objbase.h>
#include <initguid.h>
#include <mapiguid.h>

typedef long HRESULT;
#if !defined(_NATIVE_WCHAR_T_DEFINED)
typedef unsigned short WCHAR;
#else
typedef wchar_t WCHAR;
#endif

#define RPC_STRING WCHAR *
#define RPC_SIZE(X)

#define IN
#define OUT

#endif // MIDL_PASS

La parte fra il primo e il secondo grassetto viene definita per il passaggio del preprocessore del compilatore MIDL...fra il secondo e il terzo grassetto viene definita per il preprocessore C++...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
ECOVACS T90S PRO OMNI Care Kit a 699€: 4...
iPhone Duo, i problemi di produzione con...
Lenovo e FIFA, il bilancio dei Mondiali ...
La Terra vista dalla Stazione Spaziale: ...
L'IA cinese ti spiega come produrre armi...
Nuova Fire TV Stick 4K e Telecomando Fir...
Addio Visa e Mastercard? L'Europa prepar...
Allarme IA in Florida: lo stato invoca i...
Tutte le Offerte Prime anticipate: robot...
Procura di Sassari e Oxygen Forensics: i...
Duo-Man trasforma iPhone Duo in un Walkm...
Questa carta da parati produce elettrici...
Perseverance scopre su Marte rocce mai o...
Batterie allo stato solido, Gotion alza ...
Caviar presenta la Black Edition di iPho...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v