002
21.09.2005, 11:55 Uhr
ProgNoob
|
ich suche alle angeschlossenen geräte und ich bekomm den path nur dass ich nicht immer ein gültiges datei handle zurückbekomme nach ein paar proben bin ich überzeugt dass es das keyboard und die maus ist auf die ich kein pointer bekomme auf hubs ect. bekomm ich ein gültiges
hier ein bisschen code
C++: |
HIDD_ATTRIBUTES Attributes; int MemberIndex=0, count=0; long Result,Intdet,Attr; SP_DEVICE_INTERFACE_DATA devInfoData; bool LastDevice = FALSE;
HidD_GetHidGuid(&HidGuid);
hDevInfo = SetupDiGetClassDevs (&HidGuid, NULL, NULL, DIGCF_PRESENT|DIGCF_INTERFACEDEVICE); if(hDevInfo == INVALID_HANDLE_VALUE) AfxMessageBox("SetupDiGetClassDevs");
devInfoData.cbSize = sizeof(devInfoData); MemberIndex = 0; LastDevice = FALSE; do { Result=0; Result = SetupDiEnumDeviceInterfaces (hDevInfo, 0, &HidGuid, MemberIndex, &devInfoData); if(Result != 0) { Intdet = SetupDiGetDeviceInterfaceDetail (hDevInfo, &devInfoData, NULL, 0, &Length, NULL);
detailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(Length); detailData -> cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
Intdet = SetupDiGetDeviceInterfaceDetail (hDevInfo, &devInfoData, detailData, Length, &Required, NULL); if(Intdet==0)AfxMessageBox("SetupDiGetDeviceInterfaceDetail "); DeviceHandle =0;
DeviceHandle = CreateFile (detailData->DevicePath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL); //if(DeviceHandle==INVALID_HANDLE_VALUE) AfxMessageBox("CreateFile"); Attributes.Size = sizeof(Attributes);
Attr = HidD_GetAttributes (DeviceHandle, &Attributes); //if(Attr==0)AfxMessageBox("GetAtt"); if(DeviceHandle != INVALID_HANDLE_VALUE) { Alle_ConDev[count].Produkt_ID = Attributes.ProductID; Alle_ConDev[count].Vendor_ID = Attributes.VendorID; Alle_ConDev[count].Version = Attributes.VersionNumber; Alle_ConDev[count].Device_Handle = DeviceHandle; count++; } GetDeviceCapabilities(); free(detailData); CloseHandle(DeviceHandle); } else LastDevice = true; MemberIndex = MemberIndex + 1;
}while(LastDevice == false);
|
Dieser Post wurde am 21.09.2005 um 11:58 Uhr von FloSoft editiert. |