自作アプリ+USBSnpys

HANDLE hSniffer = CreateFile(L"\\\\.\\USBSnpys", 
        GENERIC_READ | GENERIC_WRITE,
        FILE_SHARE_READ | FILE_SHARE_WRITE,
        NULL, // no SECURITY_ATTRIBUTES structure
        OPEN_EXISTING, // No special create flags
        0, // No special attributes
        NULL);

は正常終了.

DeviceIoControl(hSniffer, USBSNOOP_GET_SNOOPED_DEVS, 
                NULL, 0,
                &SnoopedDevices, sizeof(SnoopedDevices),
                &dwBytesReturned, NULL);

これも正常終了.

DeviceIoControl(hSniffer, USBSNOOP_ENABLE_LOGGING,
            &EnableLogging, sizeof(EnableLogging),
            &EnableLogging, sizeof(EnableLogging),
            &dwBytesReturned, NULL);

これが,GetLastError()によると87のエラー.USBSnpysのコードを読むと,return STATUS_INVALID_PARAMETERの記述が多々ある.まぁドライバの動きは正常だし,エラーもちゃんと見えている.問題なのは,ドライバへのアクセス方法.


試行錯誤の結果.SnoopyProでSniffしてる時は,エラーなしでいけた.結論から行くと,DeviceIoControl(,USBSNOOP_GET_SNOOPED_DEVS,,,)で得た,SnoopedDevicesのEntryにデバイスが入っていても,uCount==0だとだめ.何か処理を飛ばしてるに違いない.


それは,USBデバイスの再接続,もしくは接続であった.接続したときにUSBSnpysがDetectしてるに違いない.