Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto
Samsung rinnova la serie pieghevole di punta con Galaxy Z Fold8 Ultra: pannello interno da 8 pollici quasi senza piega, cerniera Flex Titanium, Snapdragon 8 Elite Gen 5 for Galaxy e batteria finalmente da 5.000 mAh. Prezzo italiano da 2.299 a 2.899 euro. Tra colorimetro, benchmark reali e giorni di uso quotidiano, ecco dove questo pieghevole convince e dove il nome Ultra fatica ancora a trovare piena giustificazione
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing"
La nuova Insta360 X6 introduce sensori Sony da 1/1.1" e un SoC Triple AI a 4nm. Analizziamo le riprese 8K, il primo Dolby Vision nativo a 10-bit nel settore sferico e l'innovativo flusso di lavoro diretto sulla futura versione 22 di DaVinci Resolve.
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli
Dopo due settimane trascorse al volante della Dacia Spring 2026 possiamo raccontarvi tutto, dalle novità di motore e batteria, fino ai consumi in tutti le situazioni, compresa l'autonomia reale ad alta velocità
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


Recensione Samsung Galaxy Z Fold8 Ultra: il pieghevole più famoso diventa quasi perfetto Recensione Samsung Galaxy Z Fold8 Ultra: il pieg...
Insta360 X6: Dolby Vision, 8K e montaggio "Zero Editing" Insta360 X6: Dolby Vision, 8K e montaggio "...
Due settimane con Dacia Spring 2026: novità, consumi, autonomia reale e test bagagli Due settimane con Dacia Spring 2026: novit&agrav...
AORUS GeForce RTX 5080 INFINITY WOOD 16G: una scheda video diversa dalle altre AORUS GeForce RTX 5080 INFINITY WOOD 16G: una sc...
Hyundai Ioniq 9: dopo due settimane di test non avremmo voluto restituirla Hyundai Ioniq 9: dopo due settimane di test non ...
Vogliono costruire un monumento per Elon...
Ring Intercom Audio crolla a 39,99€ su A...
La Francia blocca il divieto dei social ...
Trump citato in giudizio: chiesto lo sto...
PEC obbligatoria per revisione e passagg...
Il ripulitore di watermark Claude da 4.5...
Xiaomi 17 Ultra scambia il Sole per la L...
È arrivata la migliore e-bike Eng...
Apple Mac mini M4, ecco perché conviene ...
Robot aspirapolvere in offerta su Amazon...
Il nuovo pick-up elettrico di Ford &egra...
Google Pixel 11 arriva su Amazon: preord...
Mega sconti su attrezzi a batteria e rob...
Google Search dà per morto Sam Al...
Il noleggio delle GPU NVIDIA si quota in...
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: 21:51.


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