Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-05-2007, 16: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, 16: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, 16: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, 16: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 16:46.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-05-2007, 16: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, 16: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, 16: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


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Donald Trump renderà pubbliche in...
Prezzo mai visto da mesi: ECOVACS DEEBOT...
Non solo S26, Samsung sta per lanciare a...
Windows 11 avrà a breve uno Speed...
Ask Intel: l'assistente IA che ti aiuta ...
Nasce Freedom.gov: il portale USA per ag...
Bose QuietComfort SC a 179,95€: ANC legg...
Attenzione ai conti: confermata falla sf...
30.000 Pa e lavaggio a 100°C: DREAME...
Nioh 3 vola oltre 1 milione di copie, la...
AMD Radeon RX 9060 XT: staccato (di molt...
WhatsApp introduce la condivisione della...
iPad con chip A16 a 339€: l'11'' con 128...
OpenClaw spaventa le aziende: perch&eacu...
Samsung T7 2TB crolla su Amazon: SSD por...
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: 17:13.


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