Y
yawijaya
Guest
Io sono lo sviluppo di una applicazione Windows di comunicare con un USB HID.Ho la lavorazione del firmware del dispositivo, e le finestre anche riconoscerlo senza problemi.Ora sono inciampato su come il software sarà in grado di trovare il dispositivo corretto per comunicare con.Ho letto diversi codici online e quasi tutti fanno riferimento al metodo stesso di trovare il dispositivo corretto.Tuttavia, sembra che ci sia una parte il codice che mi sta dando dei problemi, che è la chiamata della funzione SetupDiGetDeviceInterfaceDetail.Ecco il pezzo di codice:
HidD_GetHidGuid (& HidGuid);
hDevInfo = SetupDiGetClassDevs
(& HidGuid,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);devInfoData.cbSize = sizeof (devInfoData);
LastDevice = FALSE;
Risultato = SetupDiEnumDeviceInterfaces
(hDevInfo,
0,
& HidGuid,
MemberIndex,
& devInfoData);
if (result! = 0)
(
Risultato = SetupDiGetDeviceInterfaceDetail
(hDevInfo,
& devInfoData,
NULL,
0,
& Lunghezza,
NULL);detailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA) malloc (Lunghezza);detailData-> cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA);
Memo-> Text = detailData-> cbSize;Risultato = SetupDiGetDeviceInterfaceDetail
(hDevInfo,
& devInfoData,
detailData,
Lunghezza,
& Obbligatori,
NULL);
Risultato = GetLastError ();
Memo-> Lines-> Add (Result);
)
Il GetLastError () restituisce il codice di errore 1784, che è "il buffer fornito dall'utente non è valido per l'operazione richiesta."Questo errore è previsto?Se no, qualcuno ha un suggerimento di quello che dovrei fare? Grazie
HidD_GetHidGuid (& HidGuid);
hDevInfo = SetupDiGetClassDevs
(& HidGuid,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);devInfoData.cbSize = sizeof (devInfoData);
LastDevice = FALSE;
Risultato = SetupDiEnumDeviceInterfaces
(hDevInfo,
0,
& HidGuid,
MemberIndex,
& devInfoData);
if (result! = 0)
(
Risultato = SetupDiGetDeviceInterfaceDetail
(hDevInfo,
& devInfoData,
NULL,
0,
& Lunghezza,
NULL);detailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA) malloc (Lunghezza);detailData-> cbSize = sizeof (SP_DEVICE_INTERFACE_DETAIL_DATA);
Memo-> Text = detailData-> cbSize;Risultato = SetupDiGetDeviceInterfaceDetail
(hDevInfo,
& devInfoData,
detailData,
Lunghezza,
& Obbligatori,
NULL);
Risultato = GetLastError ();
Memo-> Lines-> Add (Result);
)
Il GetLastError () restituisce il codice di errore 1784, che è "il buffer fornito dall'utente non è valido per l'operazione richiesta."Questo errore è previsto?Se no, qualcuno ha un suggerimento di quello che dovrei fare? Grazie