View Full Version : [VC++] Conversione da LPVOID a LPSTR
fdfdfdddd
07-11-2006, 11:51
Salve a tutti, perdonate la banalità della domanda. Allora la questione è questa ho una struttura nel quale devo impacchetto dei dati (per intenderci è la struttura TW_MEMREF delle specifiche Twain). Un campo di questa struttura è una variabile di tipo LPVOID (il "pData" della tripletta Twain), quindi un puntatore ad una variabile di tipo a priori sconosciuto. Ora il mio problema è che devo "duplicare" questa struttura. Essendoci questo LPVOID non posso chiaramente usare una malloc e per questo avevo pensato di crearmi una struttura destinataria il cui campo "pData" non è un LPVOID ma un LPSTR (ho infatti bisogno di scrivere questi dati in un file binario). Come diavolo faccio quindi a copiare il contenuto della locazione di memoria di questo benedetto LPVOID e metterlo quindi in una stringa?
Grazie 1000 anticipatamente a tutti!!
Salve a tutti, perdonate la banalità della domanda. Allora la questione è questa ho una struttura nel quale devo impacchetto dei dati (per intenderci è la struttura TW_MEMREF delle specifiche Twain). Un campo di questa struttura è una variabile di tipo LPVOID (il "pData" della tripletta Twain), quindi un puntatore ad una variabile di tipo a priori sconosciuto. Ora il mio problema è che devo "duplicare" questa struttura. Essendoci questo LPVOID non posso chiaramente usare una malloc e per questo avevo pensato di crearmi una struttura destinataria il cui campo "pData" non è un LPVOID ma un LPSTR (ho infatti bisogno di scrivere questi dati in un file binario). Come diavolo faccio quindi a copiare il contenuto della locazione di memoria di questo benedetto LPVOID e metterlo quindi in una stringa?Guarda, ho dato una occhiata adesso al file twain.h. Intanto TW_MEMREF non è una struttura! Ma un semplice typedef che rappresenta "un generico puntatore".
Quindi a quale variabile di tipo TW_MEMREF di riferisci?? :confused: (il tipo TW_MEMREF viene usato in altre strutture/funzioni)
fdfdfdddd
07-11-2006, 13:29
Guarda, ho dato una occhiata adesso al file twain.h. Intanto TW_MEMREF non è una struttura! Ma un semplice typedef che rappresenta "un generico puntatore".
Quindi a quale variabile di tipo TW_MEMREF di riferisci?? :confused: (il tipo TW_MEMREF viene usato in altre strutture/funzioni)
Si scusa, ho detto un'imprecisione ... TW_MEMREF è il tipo di un campo di una struttura PTWMSG
typedef struct
{
pTW_IDENTITY pSrc;
TW_UINT32 DG;
TW_UINT16 DAT;
TW_UINT16 MSG;
TW_MEMREF pData;
} TWMSG, FAR * PTWMSG;
Questa è la struttura che devo copiare. Quindi dicevo ... quello che mi crea "problemi" è il campo pData che è un puntatore a una variabile in principio non definita. Ora io vorrei copiare questa struttura in una del tipo:
typedef struct {
HWND hwnd;
TW_UINT32 DG;
TW_UINT16 DAT;
TW_UINT16 MSG;
LPSTR pData;
} TW_INFO_EXP;
quindi devo riversare il "pData" LPVOID in questo "pData" di tipo LPSTR ...
Ciao e grazie 1000 ancora!
Si scusa, ho detto un'imprecisione ... TW_MEMREF è il tipo di un campo di una struttura PTWMSG
typedef struct
{
pTW_IDENTITY pSrc;
TW_UINT32 DG;
TW_UINT16 DAT;
TW_UINT16 MSG;
TW_MEMREF pData;
} TWMSG, FAR * PTWMSG;
Sto guardando adesso nel file twain.h presente sul sito ufficiale ma non c'è questa struttura. Ne parla solo 1 volta nella documentazione in PDF. C'è un esempio in cui pData viene castato così: ((pTW_EVENT)pData).
La documentazione PDF dice:
pData
Always references a structure or variable corresponding to the TWAIN type specified by the DAT_xxxx parameter. Typically, but not always, the data argument type name corresponds to a TW_xxxx data structure name. For example, the DAT_IDENTITY argument type uses the corresponding TW_IDENTITY data structure.
Quindi a cosa punta quel pData, credo che dipenda dalle altre informazioni, DAT, ecc...
fdfdfdddd
07-11-2006, 14:06
Innanzi tutto grazie, bene .. la struttura che ho citato è implementata nell'esempio della sorgente twain che installa l'SDK. Il pData è un parametro che passa il client twain ... quindi potrebbe essere banalmente una stringa passata per riferimento dentro la quale la sorgente che sto realizzando scriverà che ne so ... boh, il valore di determinate capability a seguito di una interrogazione.
Ad ogni modo credo che il mio problema stia da qualche altra parte perché effettivamente con una "memcpy" in un progettino di prova funziona perfettamente. Boh ...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.