Go to the source code of this file.
◆ AtaIdeRegsToTaskFile()
Definition at line 16 of file smart.c.
20{
22
23 TaskFile->
Feature = IdeRegs->bFeaturesReg;
25 TaskFile->
LowLba = IdeRegs->bSectorNumberReg;
26 TaskFile->
MidLba = IdeRegs->bCylLowReg;
27 TaskFile->
HighLba = IdeRegs->bCylHighReg;
29
30
31 TaskFile->
DriveSelect = IdeRegs->bDriveHeadReg & ~IDE_DRIVE_SELECT_SLAVE;
33}
#define IDE_COMMAND_SMART
#define IDE_DRIVE_SELECT_SLAVE
UCHAR MidLba
LBA bits 8-15.
UCHAR HighLba
LBA bits 16-23.
UCHAR LowLba
LBA bits 0-7.
Referenced by AtaReqSmartIoControl().
◆ AtaPdoHandleMiniportIdentify()
Definition at line 207 of file smart.c.
210{
211 union _PARAMS
212 {
216
218
221 {
224 }
225
227
229 {
232 }
233
235 Buffer.CmdOut->DriverStatus.bDriverError = 0;
236 Buffer.CmdOut->DriverStatus.bIDEError = 0;
237
239
242}
struct _SENDCMDINPARAMS * PSENDCMDINPARAMS
_In_ PSCSI_REQUEST_BLOCK Srb
#define SRB_STATUS_SUCCESS
#define SRB_STATUS_INVALID_REQUEST
#define IDENTIFY_BUFFER_SIZE
struct _SRB_IO_CONTROL SRB_IO_CONTROL
#define STATUS_BUFFER_TOO_SMALL
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_INVALID_DEVICE_REQUEST
Referenced by AtaPdoHandleIoControl().
◆ AtaPdoHandleMiniportSmartVersion()
Definition at line 246 of file smart.c.
249{
254
256
258 {
261 }
262
264
265
269
271
273
274
276 {
279
283 if (!DevExt)
284 continue;
285
288 DeviceFlag <<= 2;
290 DeviceFlag <<= 4;
292
294 }
295
298}
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)
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
struct _GETVERSIONINPARAMS * PGETVERSIONINPARAMS
ATAPORT_PORT_DATA PortData
ATAPORT_COMMON_EXTENSION Common
IO_REMOVE_LOCK RemoveLock
ATAPORT_IO_CONTEXT Device
ATAPORT_COMMON_EXTENSION Common
#define IoReleaseRemoveLock(_RemoveLock, _Tag)
Referenced by AtaPdoHandleIoControl().
◆ AtaReqCompleteSmartIoControl()
Definition at line 54 of file smart.c.
56{
58
60
62 {
65 }
66 else
67 {
70 }
71
72
74 {
76 {
78
80 }
81 else
82 {
85 }
86 }
87
89}
#define REQUEST_FLAG_SAVE_TASK_FILE
#define REQUEST_FLAG_HAS_TASK_FILE
struct _IDEREGS * PIDEREGS
struct _SENDCMDOUTPARAMS * PSENDCMDOUTPARAMS
static VOID AtaTaskFileToIdeRegs(_In_ ATA_DEVICE_REQUEST *__restrict Request, _Out_ IDEREGS *__restrict IdeRegs)
DRIVERSTATUS DriverStatus
Referenced by AtaReqSmartIoControl().
◆ AtaReqSmartIoControl()
Definition at line 92 of file smart.c.
96{
97 union _PARAMS
98 {
102
105
107
110
111 switch (
Buffer.CmdIn->irDriveRegs.bFeaturesReg)
112 {
114 {
117 break;
118 }
119
121 {
124 break;
125 }
126
128 {
132 break;
133 }
134
136 {
140 break;
141 }
142
144 {
147 break;
148 }
149
151 {
152 UCHAR Subcommand =
Buffer.CmdIn->irDriveRegs.bSectorNumberReg;
153
156 {
158 }
159
161 }
167 {
168 Request->DataTransferLength = 0;
170 break;
171 }
172
173 default:
175 }
176
178 {
181 {
183 }
184
186 }
188 {
191 {
193 }
194
196 }
197
199
201
203}
#define REQUEST_FLAG_DATA_IN
#define REQUEST_FLAG_DATA_OUT
#define SRB_STATUS_PENDING
#define EXECUTE_OFFLINE_DIAGS
#define READ_ATTRIBUTE_BUFFER_SIZE
#define SMART_SHORT_SELFTEST_CAPTIVE
#define SAVE_ATTRIBUTE_VALUES
#define RETURN_SMART_STATUS
#define SMART_LOG_SECTOR_SIZE
#define SMART_EXTENDED_SELFTEST_CAPTIVE
#define ENABLE_DISABLE_AUTO_OFFLINE
#define READ_THRESHOLD_BUFFER_SIZE
#define ENABLE_DISABLE_AUTOSAVE
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)
Referenced by AtaReqTranslateRequest().
◆ AtaTaskFileToIdeRegs()