33 Request->TaskFile.SectorCount = (
UCHAR)DevExt->Device.SectorsPerTrack;
34 Request->TaskFile.DriveSelect = (
UCHAR)(DevExt->Device.Heads - 1) |
35 DevExt->Device.DeviceSelect;
40 WARN(
"CH %lu: Failed to set geometry for '%s'\n",
42 DevExt->TransferModeSelectedBitmap,
43 DevExt->FriendlyName);
82 WARN(
"CH %lu: Failed to set %lu PIO settings for '%s'\n",
85 DevExt->FriendlyName);
115 DevExt->Device.DeviceFlags &= ~DEVICE_PIO_ONLY;
119 WARN(
"CH %lu: Failed to set 0x%lx DMA settings for '%s'\n",
120 PortData->PortNumber,
122 DevExt->FriendlyName);
124 DevExt->Device.DeviceFlags &= ~DEVICE_NCQ;
125 DevExt->TransferModeSelectedBitmap &=
PIO_ALL;
144 if (DevExt->Device.MultiSectorCount == 0)
152 Request->TaskFile.SectorCount = DevExt->Device.MultiSectorCount;
157 WARN(
"CH %lu: Failed to set %u multiple mode for '%s'\n",
158 PortData->PortNumber,
159 DevExt->Device.MultiSectorCount,
160 DevExt->FriendlyName);
162 DevExt->Device.MultiSectorCount = 0;
173 switch (AcpiTaskFile->Command)
203 Request->TaskFile.Feature = AcpiTaskFile->Feature;
204 Request->TaskFile.SectorCount = AcpiTaskFile->SectorCount;
205 Request->TaskFile.LowLba = AcpiTaskFile->LowLba;
206 Request->TaskFile.MidLba = AcpiTaskFile->MidLba;
207 Request->TaskFile.HighLba = AcpiTaskFile->HighLba;
208 Request->TaskFile.DriveSelect = AcpiTaskFile->DriveSelect;
209 Request->TaskFile.Command = AcpiTaskFile->Command;
231 for (
i = 0;
i < GtfDataBuffer->Argument[0].DataLength /
sizeof(*AcpiTaskFile); ++
i)
248 INFO(
"CH %lu: GTF[%lu]: %02x:%02x:%02x:%02x:%02x:%02x:%02x -- %s\n",
249 PortData->PortNumber,
349 DevExt->Device.MultiSectorCount = 0;
391 DevExt->Device.LocalBuffer,
392 sizeof(DevExt->IdentifyDeviceData));
#define ACPI_EVAL_OUTPUT_BUFFER_SIGNATURE
ACPI_EVAL_OUTPUT_BUFFER UNALIGNED * PACPI_EVAL_OUTPUT_BUFFER
#define IDE_FEATURE_ENABLE_MSN
#define IDE_SET_UDMA_MODE(mode)
#define IDE_SET_MWDMA_MODE(mode)
#define IDE_SET_SWDMA_MODE(mode)
#define IDE_COMMAND_SECURITY_FREEZE_LOCK
#define IDE_SET_ADVANCE_PIO_MODE(mode)
#define IDE_FEATURE_DISABLE_REVERT_TO_POWER_ON
#define IDE_FEATURE_SET_TRANSFER_MODE
#define IDE_COMMAND_SET_FEATURE
struct _ATA_ACPI_TASK_FILE * PATA_ACPI_TASK_FILE
#define DEVICE_SENSE_DATA_REPORTING
NTSTATUS AtaPortSendRequest(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
#define DEVICE_HAS_MEDIA_STATUS
NTSTATUS AtaDeviceSendIdentify(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt, _In_ UCHAR Command)
#define IDE_COMMAND_ATAPI_IDENTIFY
#define IDE_COMMAND_SET_DRIVE_PARAMETERS
#define IDE_COMMAND_IDENTIFY
#define IDE_COMMAND_SET_MULTIPLE
static NTSTATUS AtaDeviceLockSecurityModeFeatureCommands(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static VOID AtaDeviceBuildSetTransferModeTaskFile(_In_ PATA_DEVICE_REQUEST Request, _In_ UCHAR Mode)
static NTSTATUS AtaDeviceSetGeometry(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaDeviceSetMultipleMode(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaDeviceSetDmaTransferMode(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaDeviceSetPioTransferMode(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
NTSTATUS AtaPortDeviceProcessConfig(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static BOOLEAN AtaDeviceFilterAcpiTaskFile(_In_ PATA_ACPI_TASK_FILE AcpiTaskFile)
static VOID AtaDeviceAcpiTaskFileToInternalTaskFile(_In_ ATA_ACPI_TASK_FILE *__restrict AcpiTaskFile, _Out_ ATA_DEVICE_REQUEST *__restrict Request)
static NTSTATUS AtaDeviceEnableMsnFeature(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaDeviceLockDeviceParameters(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
static NTSTATUS AtaDeviceExecuteAcpiTaskFile(_In_ PATAPORT_PORT_DATA PortData, _In_ PATAPORT_DEVICE_EXTENSION DevExt)
#define NT_SUCCESS(StatCode)
for(i=0;i< ARRAY_SIZE(offsets);i++)
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
FORCEINLINE UCHAR AtaDevMaximumSectorsPerDrq(_In_ PIDENTIFY_DEVICE_DATA IdentifyData)
#define REQUEST_FLAG_SET_DEVICE_REGISTER
FORCEINLINE BOOLEAN AtaDevHasRemovableMediaStatusNotification(_In_ PIDENTIFY_DEVICE_DATA IdentifyData)
FORCEINLINE BOOLEAN AtaDevHasSecurityModeFeature(_In_ PIDENTIFY_DEVICE_DATA IdentifyData)
#define STATUS_ADAPTER_HARDWARE_ERROR
unsigned char _BitScanReverse(unsigned long *_Index, unsigned long _Mask)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO