PDA

Visualizza la versione completa : [c++]query wmi problema stringa


giuseppe500
13-02-2012, 11:30
ciao.
ho il seguente blocco di codice:


HRESULT hres = pSvc->ExecQuery(
bstr_t("WQL").GetBSTR(),
bstr_t("SELECT * FROM Win32_DiskDrive WHERE Win32_DiskDrive.DeviceID='\\\\.\\PHYSICALDRIVE0'").GetBSTR(),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);


questo codice esegue un interrogazione WQL(linguaggio tipo sql per il wmi) per trovare il disco che ha un deviceid uguale a :\\\\.\\PHYSICALDRIVE0.
Il problema che tra bstr _bstr_t ecc.. mi sa che sbaglio qualcosa negli apici o altro.

se eseguo questa interrogazione wml


HRESULT hres = pSvc->ExecQuery(
bstr_t("WQL").GetBSTR(),
bstr_t("SELECT deviceid FROM Win32_DiskDrive").GetBSTR(),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator);

ottengo
\\\\.\\PHYSICALDRIVE0
e
\\\\.\\PHYSICALDRIVE1
ma quando eseguo la prima interrogazione non trovo niente (n resultati = 0).


cosa sbaglio secondo voi?
grazie.

oregon
13-02-2012, 11:38
Ma non dovrebbe essere

"SELECT * FROM Win32_DiskDrive WHERE DeviceID='\\\\.\\PHYSICALDRIVE0'"


?

giuseppe500
13-02-2012, 12:39
non capisco , scusa oregon ma non quello che ho scritto nella prima query?
o intendi il prefisso della classe?
Win32_DiskDrive.DeviceID
se quello , gia provato a togliere , risultato: identico errore
ciao.

oregon
13-02-2012, 12:59
Originariamente inviato da giuseppe500
non capisco , scusa oregon ma non quello che ho scritto nella prima query?
o intendi il prefisso della classe?

S intendo senza prefisso ...

Ho provato con una interrogazione WMI e nella WHERE in questo modo

Win32_DiskDrive.DeviceID

non ottengo risultato, mentre se nella WHERE c' solo

DeviceID

allora funziona

Loading