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


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

Эта страница классифицирует некоторые подпрограммы поддержки, предоставляемые мини-портами системным драйвером Storport. Полный список см. в storport.h.

Список подпрограмм минипорта драйвера Storport см. в статье Storport Miniport Driver Routines.

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

Драйвер Storport предоставляет следующие процедуры прямого доступа к памяти (DMA).

Маршрут Description
StorPortBuildScatterGatherList Создает список точечной и сборной для указанного буфера данных.
StorPortGetScatterGatherList Извлекает связанный список точечной или сборной для указанного блока запросов SCSI (SRB).
StorPortPutScatterGatherList Освобождает все ресурсы, связанные с списком точечной и сборной, который ранее был создан вызовом подпрограммы StorPortBuildScatterGatherList .

Общие подпрограммы поддержки

Storport предоставляет следующие общие подпрограммы поддержки.

Маршрут Description
StorPortDebugPrint Выводит строку отладки в отладчик ядра, если отладчик подключен.
StorPortEtwEvent2 Публикует событие трассировки событий для Windows (ETW) в канале трассировки хранилища. Минипорт может записывать два параметра ETW общего назначения. Параметры ETW выражаются как две пары "имя-значение".
StorPortEtwEvent4 Публикует событие ETW в канале трассировки хранилища. Минипорт может записывать четыре параметра ETW общего назначения. Параметры ETW выражаются как четыре пары "имя-значение".
StorPortEtwEvent8 Публикует событие ETW в канале трассировки хранилища. Минипорт может записывать восемь параметров etw общего назначения. Параметры ETW выражаются как восемь пар "имя-значение".
StorPortGetActivityIdSrb Извлекает идентификатор действия ETW, связанный с блоком запроса.
StorPortGetDeviceObjects Возвращает объекты устройства, связанные с стеком устройств адаптера. Возвращаемые объекты устройства — это функциональные и физические объекты устройства адаптера и объекта устройства, к которому подключен функциональный объект устройства.
StorPortGetSystemPortNumber Извлекает назначенный системой номер порта для адаптера хранилища.
StorPortInitializeSListHead Инициализирует голову связанного списка, управляемого Storport.
StorPortInterlockedFlushSList Удаляет все элементы из связанного списка, управляемого Storport. Доступ к списку синхронизирован в многопроцессорной системе
StorPortInterlockedPopEntrySList Удаляет элемент из передней части связанного списка, управляемого Storport. Доступ к списку синхронизируется в многопроцессорной системе.
StorPortInterlockedPushEntrySList Вставляет элемент перед списком, управляемым Storport. Доступ к списку синхронизируется в многопроцессорной системе.
StorPortInvokeAcpiMethod Выполняет метод ACPI для устройства хранения.
StorPortIsCurrentOsInstallationUpgrade Проверяет, является ли текущая установка Windows обновлением из предыдущей версии или нет.
StorPortIsDeviceOperationAllowed Позволяет минипорту определить, разрешены ли операции для определенного класса управления устройствами.
StorPortLogError Уведомляет драйвер порта о возникновении ошибки.
StorPortLogTelemetry Регистрирует событие телеметрии мини-порта для диагностики или сбора полезных сведений.
StorPortLogSystemEvent Предоставляет мини-драйверам полный доступ к возможностям средства событий ядра Windows, что позволяет минипорт-драйверам создавать записи журнала событий, которые действительно полезны при устранении проблем с хранилищем. Он предоставляет лучшую альтернативу StorPortLogError.
StorPortQueryDepthSList Извлекает количество записей в списке, управляемом Storport.
StorPortQueryPerformanceCounter Запросы и возвращает текущее значение счетчика производительности системы.
StorPortQuerySystemTime Получает текущее системное время.
StorPortRegistryRead Считывает данные реестра для указанного устройства и значения.
StorPortRegistryReadAdapterKey Считывает разделы адаптера аппаратного или реестра устройств, расположенные в реестре по адресу HKLM/CurrentControlSet/Enum/<Instance path>/DeviceParameters/....
StorPortRegistryWriteAdapterKey Записывает разделы адаптера аппаратного или реестра устройств, расположенные в реестре в HKLM/CurrentControlSet/Enum/<Instance path>/DeviceParameters/....
StorPortRegistryWrite Преобразует данные реестра, содержащиеся в указанном буфере из ASCII в Юникод, а затем записывает данные в область хранилища мини-порта для каждого HBA.

Подпрограммы поддержки обработки запросов ввода-вывода

Storport предоставляет следующие подпрограммы поддержки обработки запросов ввода-вывода.

Маршрут Description
StorPortBusy Уведомляет драйвер порта о том, что адаптер в настоящее время занят, обрабатывая невыполненные запросы.
StorPortCompleteRequest Завершает все невыполненные запросы, устанавливая значение состояния SRB на SrbStatus.
StorPortCompleteServiceIrp Вызывается драйвером виртуального минипорта Storport, когда он должен завершить запрос, полученный в подпрограмме обратного вызова HwStorProcessServiceRequest.
StorPortDeviceBusy Уведомляет драйвер порта о том, что указанная логическая единица занята, обрабатывая невыполненные запросы.
StorPortDeviceReady Уведомляет драйвер порта о том, что указанная логическая единица готова к обработке новых запросов.
StorPortFreeWorker Освобождает рабочий элемент Storport, ранее выделенный подпрограммой StorPortInitializeWorker .
StorPortGetRequestInfo Извлекает сведения о запросе ввода-вывода, связанные с блоком запросов SCSI (SRB), и возвращает его в STOR_REQUEST_INFO структуре.
StorPortInitializeWorker Создает новый рабочий элемент Storport, который выполняется в рабочем потоке системы.
StorPortQueueWorkItem Планирует выполнение рабочего элемента Storport в контексте рабочего потока системы.
StorPortPause Приостанавливает адаптер в течение указанного периода времени.
StorPortPauseDevice Приостанавливает определенное логическое устройство единицы в течение указанного периода времени.
StorPortReady Уведомляет драйвер порта о том, что адаптер больше не занят.
StorPortResume Возобновляет приостановленный адаптер.
StorPortResumeDevice Возобновляет логическую единицу, которая ранее была приостановлена.

Подпрограммы поддержки инициализации

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

Маршрут Description
StorPortEnablePassiveInitialization Позволяет подпрограмме обратного вызова минипорта HwStorPassiveInitializeRoutine выполняться в PASSIVE_LEVEL во время инициализации минипорта.
StorPortGetActiveGroupCount Возвращает количество групп процессоров, присутствующих в системе.
StorPortGetActiveNodeCount Возвращает количество узлов, присутствующих в системе.
StorPortGetBusData Извлекает сведения о конфигурации для конкретной шины, необходимые для инициализации HBA.
StorPortGetCurrentProcessorNumber Извлекает текущий номер процессора из ядра.
StorPortGetGroupAffinity Создает маску активных процессоров в запрошенной группе.
StorPortGetHighestNodeNumber Возвращает максимально возможный номер узла в системе.
StorPortGetLogicalProcessorRelationship Возвращает сведения о связи для одного или нескольких указанных типов. К этим типам относятся группы, физические пакеты и узлы в системе узлов. Возвращаемые сведения включают маски сходства процессора, состоящие из логических процессоров в хост-системе. Эти логические процессоры используют указанные типы связей.
StorPortGetLogicalUnit Возвращает указатель на область хранилища мини-порта для каждого логического блока хранения.
StorPortGetNodeAffinity Создает маску активных процессоров в запрошенном узле доступа к памяти (NUMA).
StorPortGetStartIoPerfParams Помещает параметры производительности для заданного запроса ввода-вывода в структуру STARTIO_PERFORMANCE_PARAMETERS.
StorPortInitialize Инициализирует параметры драйвера портов и данные расширения. StorPortInitilize также сохраняет сведения о адаптере, предоставленные драйвером мини-порта.
StorPortInitializePerfOpts Инициализирует оптимизации производительности, поддерживаемые как драйвером минипорта, так и драйвером Storport с помощью структуры PERF_CONFIGURATION_DATA.
StorPortSetAdapterBusType Используется для настройки BusType адаптера в зависимости от текущей конфигурации. Настройка BusType с помощью этой подпрограммы позволяет переопределить глобальный набор свойств, заданных в минипорте INF, не переустановив драйвер. Эта возможность полезна для таких сценариев, как поддержка RAID или поддержка нескольких адаптеров с другим типом шины.
StorPortSetSetBusDataByOffset Записывает сведения о конфигурации конкретной шины.
StorPortSetDeviceQueueDepth Задает максимальную глубину очереди устройства для указанного устройства.
StorPortSetPowerSettingNotificationGuids Позволяет минипорту получать уведомления о параметрах питания. Минипорт регистрирует массив графических идентификаторов, определяющих параметры питания для получения уведомлений об изменении питания.
StorPortSetUnitAttributes Регистрирует атрибуты питания устройства единицы хранения с помощью драйвера Storport.

Подпрограммы поддержки прерываний

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

Маршрут Description
StorPortGetMSIInfo Извлекает сведения о сигнальных прерываниях сообщения (MSI) для указанного сообщения.
StorPortSynchronizeAccess Предоставляет синхронизированный доступ к расширению устройства минипорта драйвера.
StorPortInitializeDpc Инициализирует отложенный вызов процедуры StorPort (DPC.)
StorPortIssueDpc Выдает DPC Storport.
StorPortStallExecution Застопоряет минипорт водителя.

Блокирование подпрограмм поддержки

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

Маршрут Description
StorPortAcquireMSISpinLock Получает сигнальную блокировку прерывания (MSI), связанную с указанным сообщением.
StorPortAcquireSpinLock Получает указанную блокировку спина.
StorPortReleaseMSISpinLock Освобождает ранее полученную блокировку спина MSI для указанного сообщения.
StorPortReleaseSpinLock Освобождает спинлок, приобретенный StorPortAcquireSpinLock.

Подпрограммы поддержки управления памятью

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

Маршрут Description
StorPortAllocateContiguousMemorySpecifyCacheNode Выделяет целый ряд физически смежных некшированных непагированных памяти.
StorPortAllocateMdl Выделяет MDL для описания заданной памяти непагированного пула.
StorPortAllocatePool Выделяет блок неконтигируемой памяти пула.
StorPortAllocateRegistryBuffer Выделяет буфер, который может использовать мини-порт для чтения и записи данных реестра.
StorPortBuildMdlForNonPagedPool Обновляет MDL, чтобы описать связанную непагированную память.
StorPortConvertUlongToPhysicalAddress Преобразует неподписанный длинный адрес в физический адрес.
StorPortConvertPhysicalAddressToULong64 Преобразует физический адрес в значение ULONG64.
StorPortFreeMdl Освобождает список дескрипторов памяти (MDL), описывающий непагрегированную память пула.
StorPortFreeContiguousMemorySpecifyCache Освобождает диапазон некачеленной памяти в нераспакованной части адресного пространства системы.
StorPortFreePool Освобождает блок памяти, который ранее был выделен вызовом подпрограммы StorPortAllocatePool .
StorPortFreeRegistryBuffer Освобождает буфер, выделенный для хранения данных реестра.
StorPortGetDataInBufferMdl Возвращает MDL, связанный с буфером входных данных блока запросов SCSI (SRB).
StorPortGetDataInBufferScatterGatherList Возвращает список точечного сбора, связанный с буфером входных данных блока запросов SCSI (SRB).
StorPortGetDataInBufferSystemAddress Возвращает системный адрес для буфера входных данных блока запросов SCSI (SRB).
StorPortGetOriginalMdl Возвращает MDL, связанный с заданным SRB.
StorPortGetVirtualAddress Получает виртуальный адрес, который сопоставляется с указанным физическим адресом.
StorPortGetPhysicalAddress Преобразует заданный диапазон виртуальных адресов в физический диапазон адресов для операции DMA.
StorPortGetSystemAddress Возвращает виртуальный адрес в системном пространстве для буфера данных указанного блока запросов SCSI (SRB).
StorPortGetUncachedExtension Выделяет некшированные общие буферы, к которым может предоставляться общий доступ ЦП и устройства.
StorPortMarkDumpMemory Мини-порт должен пометить память, используемую для файла дампа или файла гибернации. Помеченная память сохраняется и остается допустимой после возобновления операции гибернации. Память для пометки указывается адресом и диапазоном в вызове StorPortMarkDumpMemory.
StorPortMoveMemory Копирует память из одного буфера в другой.

Подпрограммы поддержки уведомлений

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

Маршрут Description
StorPortAsyncNotificationDetected Уведомляет драйвер Storport об изменении состояния устройства хранилища.
StorPortNotification Уведомляет драйвер Storport о определенных событиях и условиях.
StorPortStateChangeDetected Уведомляет драйвер порта Storport об изменении состояния для логического номера единиц (LUN), порта адаптера шины узла (HBA) или целевого устройства.

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

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

Маршрут Description
StorPortGetDeviceBase Сопоставляет адрес ввода-вывода с адресным пространством системы.
StorPortFreeDeviceBase Освобождает диапазон памяти ввода-вывода устройства, сопоставленной ранее StorPortGetDeviceBase .
StorPortPortPortBufferUchar Считывает значение из указанного адреса порта
StorPortReadPortBufferUlong Считывает значение из указанного адреса порта.
StorPortPortBufferUshort Считывает значение из указанного адреса порта.
StorPortReadPortUchar Считывает значение из указанного адреса порта
StorPortReadPortUlong Считывает значение из указанного адреса порта.
StorPortReadPortUshort Считывает значение из указанного адреса порта.
StorPortReadRegisterBufferUchar Считывает значение из указанного адреса регистрации.
StorPortReadRegisterBufferUlong Считывает значение из указанного адреса регистрации.
StorPortReadRegisterBufferUlong64 Считывает указанное количество значений ULONG64 из указанного 64-разрядного адреса регистра в буфер.
StorPortReadRegisterBufferUshort Считывает значение из указанного адреса регистрации.
StorPortReadRegisterUchar Считывает значение из указанного адреса регистрации.
StorPortReadRegisterUlong Считывает значение из указанного адреса регистрации.
StorPortReadRegisterUlong64 Считывает 64-разрядное значение из указанного 64-разрядного адреса регистрации.
StorPortReadRegisterUshort Считывает значение из указанного адреса регистрации.
StorPortValidateRange Определяет, используется ли указанный диапазон адресов ввода-вывода другим адаптером. Эта подпрограмма устарела в операционных системах Windows NT 4.0 и более поздних версий.
StorPortWritePortBufferUchar Записывает значение в указанный адрес регистрации.
StorPortWritePortBufferUlong Записывает значение в указанный адрес регистрации.
StorPortWritePortBufferUshort Записывает значение в указанный адрес регистрации.
StorPortWritePortUchar Записывает значение в указанный адрес регистрации.
StorPortWritePortUlong Записывает значение в указанный адрес регистрации.
StorPortWritePortUshort Записывает значение в указанный адрес регистрации.
StorPortWriteRegisterBufferUchar Передает заданное число неподписанных байтов из буфера в HBA.
StorPortWriteRegisterBufferUlong Передает заданное число значений ULONG из буфера в HBA.
StorPortWriteRegisterBufferUlong64 Записывает указанное количество значений ULONG64 из указанного 64-разрядного адреса регистрации.
StorPortWriteRegisterBufferUshort Передает заданное число значений USHORT из буфера в HBA.
StorPortWriteRegisterUchar Передает заданное число символьных значений из буфера в указанный адрес регистра HBA.
StorPortWriteRegisterUlong Передает значение ULONG указанному адресу регистрации HBA.
StorPortWriteRegisterUlong64 Записывает значение ULONG64 в указанный адрес регистрации.
StorPortWriteRegisterUshort Передает значение ULONG указанному адресу регистрации HBA.

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

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

Маршрут Description
StorPortInitializePoFxPower Регистрирует устройство хранения с помощью платформы управления питанием (PoFx).
StorPortPoFxActivateComponent Увеличивает количество ссылок на активацию на указанный компонент устройства хранения.
StorPortPoFxIdleComponent Уменьшает количество ссылок на активацию указанного компонента устройства хранения.
StorPortPoFxPowerControl Отправляет запрос на управление питанием в платформу управления питанием (PoFx) для пересылки в подключаемый модуль двигателя питания (PEP).
StorPortPoFxSetComponentLatency Указывает максимальную задержку, которую можно допускать при переходе от простоя к активному в указанном компоненте устройства хранилища.
StorPortPoFxSetComponentResidency Задает предполагаемое время в течение длительного времени, когда компонент устройства хранения, скорее всего, останется бездействующий после того, как компонент введет условие простоя.

Подпрограммы поддержки таймера

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

Маршрут Description
StorPortFreeTimer Освобождает объект контекста таймера Storport, созданный ранее подпрограммой StorPortInitializeTimer .
StorPortInitializeTimer Создает объект контекста таймера Storport.
StorPortRequestTimer Планирует событие обратного вызова для объекта контекста таймера Storport.