tets
2016-04-09 14:10:55 UTC
Il codice qui sotto mi funziona perfettamente se lo compilo come exe.
Se invece lo compilo come dll SetupDiEnumDeviceInfo mi da un Error 6
ERROR_INVALID_HANDLE.
Mi sapete suggerire qualcosa da indagare per trovarne il motivo?
BOOL DisableInterface() {
DWORD i;
HDEVINFO hDevInfo;
SP_DEVINFO_DATA spDevInfoData ;
hDevInfo=(HDEVINFO) SetupDiGetClassDevsW(NULL, NULL, NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
if(hDevInfo == INVALID_HANDLE_VALUE){
if(dbg) wprintf(L"error");
return FALSE;
}
spDevInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
SetupDiEnumDeviceInfo(hDevInfo, 0, &spDevInfoData);
wprintf(L"Error: %d", GetLastError());
i=GetLastError();
if(i == 0) {
MessageBoxW(NULL, L"WORK!", L"OK", MB_OK);
}else{
MessageBoxW(NULL, L"FAIL!", L"KO", MB_OK);
}
return i;
}
Se invece lo compilo come dll SetupDiEnumDeviceInfo mi da un Error 6
ERROR_INVALID_HANDLE.
Mi sapete suggerire qualcosa da indagare per trovarne il motivo?
BOOL DisableInterface() {
DWORD i;
HDEVINFO hDevInfo;
SP_DEVINFO_DATA spDevInfoData ;
hDevInfo=(HDEVINFO) SetupDiGetClassDevsW(NULL, NULL, NULL,
DIGCF_ALLCLASSES | DIGCF_PRESENT);
if(hDevInfo == INVALID_HANDLE_VALUE){
if(dbg) wprintf(L"error");
return FALSE;
}
spDevInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
SetupDiEnumDeviceInfo(hDevInfo, 0, &spDevInfoData);
wprintf(L"Error: %d", GetLastError());
i=GetLastError();
if(i == 0) {
MessageBoxW(NULL, L"WORK!", L"OK", MB_OK);
}else{
MessageBoxW(NULL, L"FAIL!", L"KO", MB_OK);
}
return i;
}