Rtlstringcbprintf non è in ntstrsafe.h come descritto
-
21-12-2019 - |
Domanda
Sto cercando di usare rtlstringcbprintf con winsock kernel.Ho incluso NtstrSafe.h ma il compilatore mi dà l'errore
Error 4 error C3861: 'RtlStringCbPrintf': identifier not found c:\bw\epic_sl\musslcomm\musslcomm\commmessenger\socketx.h 124 1 CommMessenger
.
Se utilizzo rtlstringcbprintfa o rtlstringcbprintfw quindi compila.Perché non posso usare la versione generica?Guardando a NtstrSafe.h Vedo le dichiarazioni del prototipo di RTLStringCbPrintFa e RTLStringCbPrintFW ma nessuna dichiarazione per RTLStringcbPrintF Sebbene i commenti si riferiscano ad esso.Perché non riesco a usare la forma generica in modo che la mia proprietà del mio carattere seleziona la versione da utilizzare?La mia proprietà set di caratteri è impostata su Usa set di caratteri multi-byte
Soluzione
Poiché Windows non fornisce RTLStringCbPrintf definisci per queste due funzioni.Da MSDN:
.Utilizzare RTLSTRINGCBPRINTFW per gestire stringhe Unicode e Rtlstringcbprintfa per gestire stringhe ansi.Il modulo che usi dipende da i tuoi dati ..
L'esempio da MSDN utilizza la funzione RTLSTRINGCBPRINTFW (), non RTLStringcbPrintf ().
È possibile definire RTLStringCbPrintf () te stesso:
#if defined(UNICODE)
# define RtlStringCbPrintf RtlStringCbPrintfA
#else
# define RtlStringCbPrintf RtlStringCbPrintfW
#endif
.