WdfIoTargetSendIoctlSynchronously & ATA
Я пытался отправлять необработанные команды ATA через WdfIoTargetSendIoctlSynchronically, используя структуру ATA_PASS_THROUGH_EX32 и IOCTL_ATA_PASS_THROUGH IoControlCode. Что я заметил, так это то, что любые команды, кроме IOCTL_DISK_GET_DRIVE_GEOMETRY, по-видимому, терпят неудачу из-за драйвера KMDF для меня.
Я собрал стандартный 32-битный исполняемый файл и прекрасно могу использовать IOCTL_ATA_PASS_THROUGH. Драйвер не получает никаких ошибок, кроме STATUS_INVALID_PARAMETER, из возвращаемого значения NTStatus WdfIoTargetSendIoctlSynchronously.
У кого-нибудь есть какие-либо идеи?
Принятые шаги:
- WdfIoTargetCreate
- WdfIoTargetOpen
- WdfRequestCreate
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> ATA_PASS_THROUGH_EX32
- WdfMemoryCreate -> WDF_MEMORY_DESCRIPTOR_INIT_BUFFER -> OutputBuffer
- WdfIoTargetSendIoctlSynchronously