Windows에서 DeviceIoControl을 사용하여 HID에 대한 "제품 문자열"을 반환하려고합니다. 내 코드는 다음과 같습니다.
for (int i = 0; i < nDevices; i++)
{
wchar_t* productString = new wchar_t[POINTER_DEVICE_PRODUCT_STRING_MAX];
HANDLE potentialUsbDevice = CreateFile(devInfoDataBuffer[i]->DevicePath, GENERIC_READ,
NULL,
NULL,
OPEN_EXISTING,
0,
NULL);
if (potentialUsbDevice != INVALID_HANDLE_VALUE) {
DeviceIoControl(potentialUsbDevice, IOCTL_HID_GET_PRODUCT_STRING, 0, 0, productString, 0, 0, 0);
wprintf(L"%s", productString);
}
delete[] productString;
CloseHandle(potentialUsbDevice);
}
불행히도 나는 사람이 읽을 수있는 것을 얻지 못하고있다. 내 함수 호출에 문제가 있거나 포맷 문제입니까?
이 주제에 대한 귀하의 도움과 고려에 감사드립니다.
출력 버퍼의 크기 (바이트)를에 전달해야합니다 DeviceIoControl
. 또한 lpBytesReturned
NULL이 아닌 것으로 전달해야 합니다.
DWORD bytes_returned;
DeviceIoControl (potentialUsbDevice, IOCTL_HID_GET_PRODUCT_STRING, 0, 0,
productString, POINTER_DEVICE_PRODUCT_STRING_MAX * sizeof (wchar_t),
&bytes_returned, 0);
또한 오류 (간결성을 위해 내 코드에 표시되지 않음)를 확인하고 진술 CloseHandle
내에서 호출 하십시오 if
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다