Поделиться через


Процедуры поддержки драйвера портов ATA

Эта страница классифицирует процедуры поддержки, предоставляемые предоставленным системой драйвером порта ATA.

Список процедур для минипортов для драйверов ATA см. в разделе AtA Miniport Drivers.

Процедура инициализации

Драйвер порта ATA предоставляет следующую процедуру инициализации.

Подпрограмма Описание
AtaPortInitializeEx Инициализирует драйверы порта и минипорта.

Процедуры для доступа к пространству конфигурации PCI

Драйвер порта ATA предоставляет следующие процедуры, помогающие считывать и изменять содержимое пространства конфигурации PCI устройства.

Подпрограмма Описание
AtaPortGetBusData Извлекает данные из указанного расположения в пространстве конфигурации PCI устройства.
AtaPortSetBusData сохраняет данные в указанном пространстве конфигурации PCI указанного устройства с указанным смещением.

Процедуры обработки запросов ввода-вывода

Драйвер порта ATA предоставляет следующие процедуры поддержки обработки запросов ввода-вывода.

Подпрограмма Описание
AtaPortGetScatterGatherList Извлекает список точечной и сборной, связанный с этим запросом.
AtaPortGetPhysicalAddress Преобразует диапазон виртуальных адресов в диапазон физических адресов.
AtaPortGetDeviceBase Возвращает сопоставленный логический базовый адрес, который используется для взаимодействия с адаптером шины узла (HBA).
AtaPortGetUncachedExtension Выделяет общий буфер без кэширования, который совместно используется ЦП и устройством.
AtaPortBuildRequestSenseIrb Создает и возвращает IRB для кода операции SCSIOP_REQUEST_SENSE.
AtaPortReleaseRequestSenseIrb Освобождает IRB-код, выделенный с помощью AtaPortBuildRequestSenseIrb.
AtaPortCompleteAllActiveRequests Завершает все активные IRB для указанного устройства.
AtaPortCompleteRequest Завершает указанный IRB.

Процедуры обратного вызова

Драйвер мини-порта использует несколько процедур для запроса обратного вызова от драйвера порта.

Подпрограмма Описание
AtaPortRequestWorkerRoutine Запрашивает рабочую подпрограмму.
AtaPortRequestSynchronizedRoutine Запрашивает синхронизацию с подпрограммой службы прерываний (ISR).
AtaPortControllerSyncRoutine Обеспечивает синхронизированный доступ к структурам данных, которые совместно используются во всех каналах контроллера.
AtaPortRequestTimer Запрашивает обратный вызов таймера.

Подпрограммы, сообщающие об изменении конфигурации

Следующие процедуры позволяют драйверу мини-порта уведомлять драйвер порта ATA об изменениях в конфигурации устройств, подключенных к каналу.

Подпрограмма Описание
AtaPortBusChangeDetected Уведомляет драйвер порта об изменениях в конфигурации устройства в указанном канале.
AtaPortRequestPowerStateChange Запрашивает переход состояния питания для указанного устройства.

Подпрограммы для управления очередями запросов

Драйвер порта поддерживает по одной очереди запросов на логический номер единицы (LUN) и одну очередь запросов для каждого канала. Драйвер мини-порта может использовать следующие процедуры для приостановки и возобновления различных очередей запросов.

Подпрограмма Описание
AtaPortDeviceBusy Сообщает драйверу порта о том, что указанное устройство занято.
AtaPortDeviceReady Сообщает драйверу порта о том, что указанное устройство готово к приему новых запросов.

Подпрограммы служебной программы

Следующие процедуры являются общими функциями поддержки служебных программ для драйверов мини-портов.

Подпрограмма Описание
AtaPortCopyMemory Копирует данные из одного расположения в другое.
**Процедура AtaPortMoveMemory Копирует данные из одного расположения в другое.
AtaPortConvertUlongToPhysicalAddress Преобразует заданный адрес ULONG в значение типа IDE_PHYSICAL_ADDRESS.
AtaPortConvertPhysicalAddressToUlong Усекает адрес типа IDE_PHYSICAL_ADDRESS до ULONG.
AtaPortStallExecution Стойло в водителе минипорта.
AtaPortInitializeQueueTag Инициализирует список тегов очереди для указанного устройства.
AtaPortAllocateQueueTag Возвращает тег очереди для указанного устройства.
AtaPortReleaseQueueTag Освобождает указанный тег очереди.

Процедуры отладки и отчетов об ошибках

Следующую подпрограмму можно использовать для отладки и создания отчетов об ошибках.

Подпрограмма Описание
AtaPortDebugPrint Передает строку сообщения в отладчик ядра для печати отладчика.

Процедуры для доступа к порту устройства и регистрации

Драйвер портов ATA предоставляет следующие процедуры поддержки доступа к портам и регистрациям.

Подпрограмма Описание
AtaPortReadPortBufferUchar Передает заданное количество неподписанных байтовых значений из адаптера байтов в буфер.
AtaPortReadPortBufferUlong Передает заданное число значений ULONG из адаптера безопасности в буфер.
AtaPortReadPortBufferUshort Передает заданное количество значений USHORT из адаптера шины в буфер.
AtaPortReadPortUchar Считывает значение байта без знака из адаптера байтов.
AtaPortReadPortUlong Считывает значение ULONG из HBA.
AtaPortReadPortUshort Считывает значение USHORT из HBA.
AtaPortReadRegisterBufferUchar Передает указанное число неподписанных байтов из HBA в буфер.
AtaPortReadRegisterBufferUlong Передает указанное число ULONG из HBA в буфер.
AtaPortReadRegisterBufferUshort Передает указанное число USHORT из HBA в буфер.
AtaPortReadRegisterUchar Считывает значение байта без знака из адаптера байтов.
AtaPortReadRegisterUlong Считывает значение ULONG из HBA.
AtaPortReadRegisterUshort Считывает значение USHORT из HBA.
AtaPortWritePortBufferUchar Записывает значение в указанный адрес регистра.
AtaPortWritePortBufferUlong Записывает значение в указанный адрес регистра.
AtaPortWritePortBufferUshort Записывает значение в указанный адрес регистра.
AtaPortWritePortUchar Передает в HBA значение байта без знака.
AtaPortWritePortUlong Передает значение ULONG в HBA.
AtaPortWritePortUshort Передает значение USHORT в HBA.
AtaPortWriteRegisterBufferUchar Передает указанное число неподписанных байтов из буфера в HBA.
AtaPortWriteRegisterBufferUlong Передает указанное количество значений ULONG из буфера в HBA.
AtaPortWriteRegisterBufferUshort Передает указанное количество значений USHORT из буфера в HBA.
AtaPortWriteRegisterUchar Передает неподписанный байт на адрес HBA.
AtaPortWriteRegisterUlong Передает значение ULONG в адрес HBA.
AtaPortWriteRegisterUshort Передает значение USHORT на адрес HBA.

Подпрограммы для доступа к реестру

Драйвер мини-порта, реализующий интерфейс канала, может вызывать следующие подпрограммы для доступа к реестру Windows. Драйверы минипорта, реализующие только подпрограммы интерфейса контроллера, не могут получить доступ к этим подпрограммам.

Подпрограмма Описание
AtaPortRegistryAllocateBuffer Выделяет буфер для операций реестра.
AtaPortRegistryFreeBuffer Освобождает буфер реестра, выделенный с помощью AtaPortRegistryAllocateBuffer.
AtaPortRegistryControllerKeyRead Считывает данные, связанные с указанным именем значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN, где N — номер контроллера.
AtaPortRegistryContrlollerKeyWrite Записывает данные в указанное имя значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN, где N — номер контроллера.
AtaPortRegistryControllerKeyWriteDeferred Асинхронно записывает данные в указанное имя значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN, где N — номер контроллера.
AtaPortRegistryChannelSubKeyRead Считывает данные, связанные с указанным именем значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, где N — номер контроллера, а M — номер канала.
AtaPortRegistryChannelSubKeyWrite Записывает данные в указанное имя значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, где N — номер контроллера, а M — номер канала.
AtaPortRegistryChannelSubKeyWriteDeferred Асинхронно записывает данные в указанное имя значения в разделе реестра HKLM\CurrentControlSet\Services\<service name>\ControllerN\ChannelM, где N — номер контроллера, а M — номер канала.