23 TaskFile->
Feature = IdeRegs->bFeaturesReg;
25 TaskFile->
LowLba = IdeRegs->bSectorNumberReg;
26 TaskFile->
MidLba = IdeRegs->bCylLowReg;
27 TaskFile->
HighLba = IdeRegs->bCylHighReg;
31 TaskFile->
DriveSelect = IdeRegs->bDriveHeadReg & ~IDE_DRIVE_SELECT_SLAVE;
43 IdeRegs->bFeaturesReg = TaskFile->
Feature;
45 IdeRegs->bSectorNumberReg = TaskFile->
LowLba;
46 IdeRegs->bCylLowReg = TaskFile->
MidLba;
47 IdeRegs->bCylHighReg = TaskFile->
HighLba;
48 IdeRegs->bCommandReg = TaskFile->
Command;
111 switch (
Buffer.CmdIn->irDriveRegs.bFeaturesReg)
152 UCHAR Subcommand =
Buffer.CmdIn->irDriveRegs.bSectorNumberReg;
168 Request->DataTransferLength = 0;
235 Buffer.CmdOut->DriverStatus.bDriverError = 0;
236 Buffer.CmdOut->DriverStatus.bIDEError = 0;
#define IDE_COMMAND_SMART
#define REQUEST_FLAG_DATA_IN
#define REQUEST_FLAG_DATA_OUT
#define REQUEST_FLAG_SAVE_TASK_FILE
#define REQUEST_FLAG_HAS_TASK_FILE
FORCEINLINE ATA_SCSI_ADDRESS AtaMarshallScsiAddress(_In_ ULONG PathId, _In_ ULONG TargetId, _In_ ULONG Lun)
DECLSPEC_NOINLINE_FROM_PAGED PATAPORT_DEVICE_EXTENSION AtaFdoFindDeviceByPath(_In_ PATAPORT_CHANNEL_EXTENSION ChanExt, _In_ ATA_SCSI_ADDRESS AtaScsiAddress, _In_ PVOID ReferenceTag)
#define IDE_DRIVE_SELECT_SLAVE
struct _IDEREGS * PIDEREGS
struct _SENDCMDOUTPARAMS * PSENDCMDOUTPARAMS
struct _SENDCMDINPARAMS * PSENDCMDINPARAMS
_In_ PSCSI_REQUEST_BLOCK Srb
#define SRB_STATUS_PENDING
#define SRB_STATUS_SUCCESS
#define SRB_STATUS_INVALID_REQUEST
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXECUTE_OFFLINE_DIAGS
#define READ_ATTRIBUTE_BUFFER_SIZE
#define SMART_SHORT_SELFTEST_CAPTIVE
#define SAVE_ATTRIBUTE_VALUES
#define RETURN_SMART_STATUS
#define IDENTIFY_BUFFER_SIZE
#define SMART_LOG_SECTOR_SIZE
#define SMART_EXTENDED_SELFTEST_CAPTIVE
#define ENABLE_DISABLE_AUTO_OFFLINE
struct _GETVERSIONINPARAMS * PGETVERSIONINPARAMS
#define READ_THRESHOLD_BUFFER_SIZE
#define ENABLE_DISABLE_AUTOSAVE
struct _SRB_IO_CONTROL SRB_IO_CONTROL
#define STATUS_BUFFER_TOO_SMALL
static VOID AtaTaskFileToIdeRegs(_In_ ATA_DEVICE_REQUEST *__restrict Request, _Out_ IDEREGS *__restrict IdeRegs)
static VOID AtaIdeRegsToTaskFile(_In_ ATAPORT_DEVICE_EXTENSION *__restrict DevExt, _In_ IDEREGS *__restrict IdeRegs, _Out_ ATA_DEVICE_REQUEST *__restrict Request)
static ATA_COMPLETION_ACTION AtaReqCompleteSmartIoControl(_In_ PATA_DEVICE_REQUEST Request)
NTSTATUS AtaPdoHandleMiniportSmartVersion(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb)
UCHAR AtaReqSmartIoControl(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PATA_DEVICE_REQUEST Request, _In_ PSCSI_REQUEST_BLOCK Srb)
NTSTATUS AtaPdoHandleMiniportIdentify(_In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ PSCSI_REQUEST_BLOCK Srb)
ATAPORT_PORT_DATA PortData
ATAPORT_COMMON_EXTENSION Common
IO_REMOVE_LOCK RemoveLock
ATAPORT_IO_CONTEXT Device
ATAPORT_COMMON_EXTENSION Common
UCHAR MidLba
LBA bits 8-15.
UCHAR HighLba
LBA bits 16-23.
UCHAR LowLba
LBA bits 0-7.
DRIVERSTATUS DriverStatus
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INVALID_DEVICE_REQUEST
#define IoReleaseRemoveLock(_RemoveLock, _Tag)