2010-06-24 4 views
0

설명 된 기술을 사용하여 InstanceSetup 콜백 내에서 미니 파일러 파일 시스템 드라이버 내부에서 USB 저장 장치 일련 번호를 추출하려면 here 유일한 차이점은 내가 수행한다는 것입니다 커널 모드.USB 저장 장치 SerialNumber (USB 장치 설명자에서)

status = IoGetDeviceInterfaces( 
    &GUID_DEVINTERFACE_DISK, 
    NULL, 
    0, 
    &SymbolicLinkList 
); 

가능 인터페이스 (예를 들어, 결과)을 통해 열거 할 :
내가 사용

\??\SCSI#Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0#4&5fcaafc&0&000#{53f56307 -b6bf-11d0-94f2-00a0c91efb8b} 
\??\USBSTOR#Disk&Ven_Kingston&Prod_DataTraveler_C10&Rev_1.00#001D92AD7568F030E3CC 0AFC&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b} 
\??\USBSTOR#Disk&Ven_USB_2.0&Prod_Flash_Disk&Rev_1100#AA04012700007777&0#{53f5630 7-b6bf-11d0-94f2-00a0c91efb8b} 

을 나는 그들 중 하나가 IOCTL_STORAGE_GET_DEVICE_NUMBER에 의하여 나의 볼륨의 인터페이스 인 찾고 싶어요.

나는 ZwCreateFile을 시도했다. & ZwDeviceIoControlFile 그러나 ZwCreateFile은 STATUS_OBJECT_NAME_INVALID를 반환한다.

어떻게 이러한 인터페이스에 IOCTLS를 보낼 수 있습니까? 사용자 모드에서는 모든 것이 정상이지만 커널 모드에서는 실패합니다!

답변

0

나는 컴퓨팅을 사용자 모드 서비스에 위임하고 포트를 통해 대화함으로써 성가신 문제를 해결했습니다. 절름발이지만 정말 유용합니다.

0

장치 이름에서 \ D \를 \ DosDevices \로 변경해야합니다. 그것은 당신의 문제를 해결해야합니다.