Процедуры поддержки драйвера портов 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 — номер канала. |