컴퓨터 지식 네트워크 - 컴퓨터 프로그래밍 - 호스트에서 USB guid 를 얻는 방법 ?

호스트에서 USB guid 를 얻는 방법 ?

손잡이? MyHid::OpenDevice(bool? 동일 겹침)

{

GUID? HidGuid

HidD _ GetHidGuid(& amp;; Hid guid);

HDevInfo? =? SetupDiGetClassDevs(& amp;; HidGuid, NULL, NULL, (DIGCF_PRESENT? | digcf _ deviceinterface));

만약? (hDevInfo? = =? 잘못된 핸들 값)

{

반환? 잘못된 핸들 값입니다.

}

SP _ 디바이스 _ 인터페이스 _ 데이터? DevInfoData

DevInfoData.cbSize? =? Sizeof? (SP _ 디바이스 _ 인터페이스 _ 데이터);

Int? 장치 번호? =? 0;

Setlasterror (no _ error);

언제? (GetLastError ()? ! =? 오류 _ 없음 _ 추가 _ 항목)

{

만약? (SetupDiEnumInterfaceDevice? (hDevInfo, 0, & amphidGuid, deviceno & DevInfoData))

{

윙? 길이가 필요하십니까? =? 0;

Setupdigetinterfacedicedetail (hdevinfo, & ampdevInfoData, NULL, 0 & amp;; RequiredLength, null);

Psp _ interface _ device _ detail _ data? DevDetail? =? (SP _ interface _ device _ details _ data *)? 말록? (required length);

Dev detail-& gt;; CbSize? =? Sizeof (sp _ interface _ device _ detail _ data);

만약 (! Setupdigetinterfacedicedetail (hdev info, & ampdevInfoData, devDetail, requiredLength, NULL, NULL))

{

무료 (dev detail);

Setupdidestroydeviceinfolist (hdeinfo);

잘못된 핸들 값을 반환합니다.

}

만약? (동일 겹침)

{

HidHandle? =? Createfile (devdetail-> DevicePath, GENERIC_READ|GENERIC_WRITE, file _ share _ read | file _ share _ write, empty);

}

기타

{

HidHandle? =? Createfile (devdetail-> DevicePath, GENERIC_READ|GENERIC_WRITE, file _ share _ read | file _ share _ write, empty);

}

무료 (dev detail);

만약? (hidHandle = = 잘못된 핸들 값)

{

Setupdidestroydeviceinfolist (hdeinfo);

무료 (dev detail);

잘못된 핸들 값을 반환합니다.

}

_ HIDD _ 속성? 속성 숨기기

만약 (! HidD_GetAttributes(hidHandle, & amphidAttributes))

{

Closehandle (hid handle);

Setupdidestroydeviceinfolist (hdeinfo);

잘못된 핸들 값을 반환합니다.

}

만약? (USB_VID? = =? 속성을 숨깁니다. VendorID & amp& amp? USB_PID? = =? 속성을 숨깁니다. ProductID) 를 참조하십시오

{

M _ isDevicesOK = true

깨뜨리다

}

기타

{

Closehandle (hid handle);

++장치 번호 :

M _ isDevicesOK = false

}

}

}? SetupDiDestroyDeviceInfoList

(hdev info);

숨겨진 손으로 돌아 가기;

}

# 정의? USB_VID? 0x08fe

# 정의? USB_PID? 0x0003

//사용자 정의 디바이스 번호입니다.

장치 관리자를 사용할 수 있습니다.

上篇: 클라우드 창작객의 여관 소프트웨어는 사기성이 있습니까? 下篇: 단일 페이지 입찰 시스템이란 무엇입니까?
관련 내용