ATA_PASS_THROUGH_EX32 構造体と IOCTL_ATA_PASS_THROUGH IoControlCode を使用して、WdfIoTargetSendIoctlSynchronously 経由で raw ATA コマンドを送信しようとしました。私が気付いたのは、IOCTL_DISK_GET_DRIVE_GEOMETRY 以外のコマンドは、KMDF ドライバー内から失敗したように見えることです。
標準の 32 ビット実行可能ファイルをビルドし、IOCTL_ATA_PASS_THROUGH を問題なく使用できます。ドライバーは、WdfIoTargetSendIoctlSynchronously の NTStatus 戻り値から、STATUS_INVALID_PARAMETER 以外のエラーを取得しません。
誰にもアイデアはありますか?
実行した手順:
- WdfIoTargetCreate
- WdfIoTargetOpen
- WdfRequestCreate
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> ATA_PASS_THROUGH_EX32
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> OutputBuffer
- WdfIoTargetSendIoctl同期的に