사용자가 USB 대용량 저장 장치를 연결할 때마다 해당 장치의 장치 인스턴스 ID (고유 ID)를 프로그래밍 방식으로 가져 오는 방법은 무엇입니까?USB 저장소 장치 인스턴스 ID (고유 ID) 프로그래밍 방식으로
답변
장치 변경 알림을 등록하면 모든 창 핸들에서 WM_DEVICECHANGE를 캐치 할 수 있습니다. 예를 들면 :
DEV_BROADCAST_DEVICEINTERFACE dbd = { sizeof(dbd) };
dbd.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
dbd.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;
RegisterDeviceNotification(hwnd, &dbd, DEVICE_NOTIFY_WINDOW_HANDLE);
WM_DEVICECHANGE의의 lParam은 DBT_DEVTYP_DEVICEINTERFACE에 캐스트 할 수 있습니다. 참고 - 장치를 연결하면 WM_DEVICECHANGE 알림이 여러 번 나타날 수 있습니다. 도착 이벤트를 필터링하고 중복을 무시하십시오.
LRESULT WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(hwnd)
{
case WM_DEVICE_CHANGE:
{
PDEV_BROADCAST_HDR pHdr = NULL;
PDEV_BROADCAST_DEVICEINTERFACE pDev = NULL;
pHdr = (PDEV_BROADCAST_HDR)lParam;
bool fDeviceArrival = (wParam == DBT_DEVICEARRIVAL);
if (fDeviceArrival)
{
if (pHdr && (pHdr->dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE))
{
pDev = (PDEV_BROADCAST_DEVICEINTERFACE)lParam;
}
if (pDev && (pDev->dbcc_classguid == GUID_DEVINTERFACE_USB_DEVICE))
{
// the PNP string of the device just plugged is in dbcc_name
OutputDebugString(pDev->dbcc_name);
OutputDebugString("\r\n");
}
}
....
WMI를 사용하여 작업 할 수 있다고 생각합니다. Win32_LogicalDiskToPartition
클래스를보고 모든 디스크 이름 목록을 얻은 다음 해당 이름을 사용하여 Win32_DiskDrive
클래스와 PNPDeviceID
속성을 쿼리합니다.
실제로 더 나은 지침과 좋은 수업을 위해 here을보세요.
하지만 난 새로 device.At 연결의 장치 인스턴스 ID를 찾으려면 내가 사용자가 allready에 두 개 또는 세 개의 펜 드라이브를 연결하면 그 무엇 새로 연결된 신호 장치의 드라이브 문자를 잘 모릅니다 시간 시스템과 이제 그는 antoher 장치를 삽입하고 있습니다. – Navaneeth
@Navaneeth :'ManagementEventWatcher' 클래스와 'DiskEventArrived'이벤트를보십시오. 이 코드는 구조를 보여 주어야합니다 : http://www.eggheadcafe.com/software/aspnet/31850441/c-usb-pluginremoval-h.aspx –
- 1. USB 복합 장치 인스턴스 ID
- 2. 장치 고유 ID 가져 오기
- 3. 원시 코드의 Android 고유 장치 ID
- 4. Windows에서 프로그래밍 방식으로 USB 장치 다시 시작
- 5. 프로그래밍 방식으로 POP3 메시지 받기 고유 ID 및 메시지 크기
- 6. NSLog에 인스턴스 ID 인쇄?
- 7. Mac에서 USB 장치 프로그래밍
- 8. Google Checkout에 고유 ID 보내기
- 9. HTML5 기기 고유 ID
- 10. 고유 사용자 ID
- 11. mongodb의 고유 ID
- 12. 고유 컨트롤 ID
- 13. 데이터베이스의 고유 ID
- 14. UUID와 고유 정수 ID?
- 15. PHP 고유 컴퓨터 ID
- 16. 클라이언트 ID : 고유 식별자 :
- 17. Android 앱의 고유 ID
- 18. 짧은 고유 ID
- 19. 개체 생성자와 고유 ID
- 20. 고유 ID SQL 버디
- 21. 고유 기기 ID
- 22. 고유 ID 생성
- 23. Ruby의 고유 시스템 ID ...?
- 24. 프로그래밍 방식으로 끝점의 ID 구성을 변경하는 방법?
- 25. Android : 프로그래밍 방식으로 리소스 ID 반복
- 26. ID, ID 또는 ID?
- 27. 고유 문자열 입력에서 고유 ID 생성
- 28. 프로그래밍 방식으로 USB 장치 연결 및 연결 해제
- 29. EC2에서 서버 인스턴스 ID 관리
- 30. 인스턴스화시 클래스에 고유 ID 부여 :
'WM_DEVICECHANGE'의'lParam'은' DBT_DEVTYP_DEVICEINTERFACE'. 'wParam'에 의존합니다. 예를 들면. wparam이'DBT_DEVICEARRIVAL' 또는'DBT_DEVICEREMOVECOMPLETE'이지만, 그것이 'DBT_DEVNODES_CHANGED'가 아닌 경우에는 캐스팅 될 수 있습니다. 'DBT_DEVNODES_CHANGED'의 경우, lParam은 항상 'zero'입니다. –