структура HW_INITIALIZATION_DATA (storport.h)

Структура HW_INITIALIZATION_DATA (Storport) содержит сведения о каждом драйвере мини-порта и оборудовании, которым управляет драйвер мини-порта.

Синтаксис

typedef struct _HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVOID                       HwFindAdapter;
  PHW_RESET_BUS               HwResetBus;
  PHW_DMA_STARTED             HwDmaStarted;
  PHW_ADAPTER_STATE           HwAdapterState;
  ULONG                       DeviceExtensionSize;
  ULONG                       SpecificLuExtensionSize;
  ULONG                       SrbExtensionSize;
  ULONG                       NumberOfAccessRanges;
  PVOID                       Reserved;
  UCHAR                       MapBuffers;
  BOOLEAN                     NeedPhysicalAddresses;
  BOOLEAN                     TaggedQueuing;
  BOOLEAN                     AutoRequestSense;
  BOOLEAN                     MultipleRequestPerLu;
  BOOLEAN                     ReceiveEvent;
  USHORT                      VendorIdLength;
  PVOID                       VendorId;
  union {
    USHORT ReservedUshort;
    USHORT PortVersionFlags;
  };
  USHORT                      DeviceIdLength;
  PVOID                       DeviceId;
  PHW_ADAPTER_CONTROL         HwAdapterControl;
  PHW_BUILDIO                 HwBuildIo;
  PHW_FREE_ADAPTER_RESOURCES  HwFreeAdapterResources;
  PHW_PROCESS_SERVICE_REQUEST HwProcessServiceRequest;
  PHW_COMPLETE_SERVICE_IRP    HwCompleteServiceIrp;
  PHW_INITIALIZE_TRACING      HwInitializeTracing;
  PHW_CLEANUP_TRACING         HwCleanupTracing;
  PHW_TRACING_ENABLED         HwTracingEnabled;
  ULONG                       FeatureSupport;
  ULONG                       SrbTypeFlags;
  ULONG                       AddressTypeFlags;
  ULONG                       Reserved1;
  PHW_UNIT_CONTROL            HwUnitControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

Участники

HwInitializationDataSize

Указывает размер этой структуры в байтах, возвращаемый sizeof(HW_INITIALIZATION_DATA). По сути, этот элемент указывает версию этой структуры, используемой драйвером мини-порта. Подпрограмма DriverEntry драйвера miniport должна задать значение этого члена для драйвера порта.

AdapterInterfaceType

Водитель Storport не поддерживает устаревшие автобусы. Поэтому большинство типов интерфейсов адаптера, используемых с драйвером портов SCSI, недопустимы для Storport. В частности, Isa, Eisa, MicroChannel и TurboChannel не поддерживаются. Кроме того, в отличие от варианта порта SCSI, мини-порт, который работает с драйвером Storport, не требуется для предоставления значений для членов VendorIdLength, VendorId, DeviceIdLength и DeviceId .

HwInitialize

Указатель на подпрограмму HwStorInitialize драйвера miniport, которая является обязательной точкой входа для всех драйверов мини-порта.

HwStartIo

Указатель на подпрограмму HwStorStartIo драйвера miniport, которая является обязательной точкой входа для всех драйверов мини-порта.

HwInterrupt

Указатель на подпрограмму HwStorInterrupt драйвера miniport, которая является обязательной точкой входа для всех драйверов мини-порта.

HwFindAdapter

Указатель на подпрограмму HwStorFindAdapter драйвера miniport, которая является обязательной точкой входа для всех драйверов минипорта.

HwResetBus

Указатель на подпрограмму HwStorResetBus драйвера miniport, которая является обязательной точкой входа для всех драйверов мини-порта.

HwDmaStarted

Драйвер Storport не поддерживает DMA в подчиненном режиме. Поэтому этот элемент должен иметь значение NULL.

HwAdapterState

Драйвер Storport не поддерживает устаревшие драйверы. Поэтому этот элемент должен иметь значение NULL.

DeviceExtensionSize

Указывает размер (в байтах), необходимый драйверу минипорта для расширения устройства для каждого адаптера. Драйвер минипорта использует расширение устройства в качестве хранилища для сведений о адаптере шины узла, определяемом драйвером. Драйвер порта для конкретной операционной системы инициализирует каждое расширение устройства один раз, когда он сначала выделяет расширение и заполняет его нулями. Он передает указатель на расширение устройства для адаптера HBA при каждом вызове драйвера мини-порта. Указанный размер не включает требуемый драйвер мини-порта для каждого логического хранилища. Размер хранилища на логическую единицу указывается с помощью поля SpecificLuExtensionSize , описанного далее в этом разделе.

Несмотря на то, что SCSIPort повторно инициализирует расширение устройства при остановке адаптера и, таким образом, последующие вызовы HwScsiFindAdapter получают расширение устройства с нуля, Storport не следует этой модели. Скорее, Storport сбрасывает расширение устройства до нуля только при первом выделении, поэтому только первый вызов HwStorFindAdapter для данного адаптера получает расширение устройства с нуля. Последующие вызовы HwStorFindAdapter и других функций минипорта получают расширение устройства в последний раз, измененное мини-портом. Это позволяет драйверу минипорта сохранять знания о состоянии адаптера между остановками и перезапусками Plug and Play (PnP), возможно, позволяя драйверу минипорта оптимизировать процедуру инициализации.

SpecificLuExtensionSize

Указывает размер в байтах, необходимый драйверу минипорта для своего хранилища на логическую единицу, если таковой имеется. Драйвер минипорта может использовать свои расширения LU в качестве хранилища для определяемых драйвером логических единиц сведений о периферийных устройствах в шине. Драйвер Storport инициализирует каждое расширение LU, выделяемое с нулями. Оставьте этот член равным нулю, если драйвер минипорта не поддерживает сведения о единицах lu, для которых требуется хранилище. Это значение основано на предположении, что HBA может получать 32-разрядные адреса независимо от того, что контроллер может на самом деле поддерживать. Если для обработки 64-разрядных адресов требуется дополнительное пространство в расширениях LUN или SRB, то перед использованием этих процедур с подпрограммами, такими как StorPortGetUncachedExtension, необходимо внести соответствующие изменения в это значение.

SrbExtensionSize

Указывает размер (в байтах), необходимый драйверу минипорта для хранилища для каждого запроса ( если таковой имеется). Минипортовый драйвер может использовать расширения SRB в качестве хранилища для определяемых драйвером сведений о запросе, таких как данные, необходимые для обработки определенного запроса. Драйвер Storport не инициализирует расширения SRB, но задает указатель на это хранилище в каждом SRB, отправляемом драйверу мини-порта. К расширению SRB можно безопасно обращаться с помощью оборудования HBA. Так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать списки точечной и сборной, а списки точечной и сборной SRB обычно выделяются в расширении SRB, этот элемент редко равен нулю. Оставьте этот член равным нулю, если драйвер минипорта не поддерживает сведения о SRB, для которых требуется хранилище.

Это значение основано на предположении, что HBA может получать 32-разрядные адреса независимо от того, что контроллер может на самом деле поддерживать. Если для обработки 64-разрядных адресов требуется дополнительное пространство в расширениях LUN или SRB, то перед использованием этих процедур с подпрограммами, такими как StorPortGetUncachedExtension, необходимо внести соответствующие изменения в это значение.

NumberOfAccessRanges

Указывает, сколько диапазонов доступа использует адаптер. Каждый из них представляет собой диапазон адресов памяти или портов ввода-вывода.

Reserved

Зарезервировано для использования системой и недоступно для использования драйверами минипорта.

MapBuffers

Указывает, сопоставляет ли драйвер Storport адреса буфера данных SRB с системными виртуальными адресами. Член MapBuffers может иметь одно из следующих значений.

Значение Значение
STOR_MAP_NO_BUFFERS Не сопоставляйте SRB, кроме SRB_FUNCTION_IO_CONTROL и SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Является устаревшей. Это значение имеет тот же эффект, что и STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Сопоставьте буфер для всех операций ввода-вывода, кроме запросов на чтение или запись.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Сопоставьте буфер для всех операций ввода-вывода, включая запросы на чтение и запись. Это значение допустимо, начиная с Windows 8.

NeedPhysicalAddresses

Должно иметь значение TRUE. Значение TRUE указывает, что драйвер минипорта должен перевести определенные типы адресов на физические адреса. Драйверы минипорта, работающие с драйвером Storport, должны поддерживать DMA мастера шины, поэтому они всегда должны выполнять преобразование адресов.

TaggedQueuing

Должно иметь значение TRUE. Значение TRUE указывает, что драйвер минипорта поддерживает очередь с тегами SCSI. Все драйверы минипорта, работающие с драйвером Storport, должны поддерживать очередь с тегами.

AutoRequestSense

Должно иметь значение TRUE. Значение TRUE указывает, что HBA может выполнять операцию с чувством запроса, не требуя явного запроса. Все драйверы минипорта, работающие с драйвером Storport, должны поддерживать функцию SCSI Auto-Request Sense.

MultipleRequestPerLu

Должно иметь значение TRUE. Значение TRUE указывает, что драйвер минипорта может помещает в очередь несколько запросов на логическую единицу. Драйверы минипорта, работающие с драйвером Storport, должны поддерживать несколько запросов на логическую единицу.

ReceiveEvent

Драйвер Storport игнорирует этот элемент.

VendorIdLength

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

VendorId

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

ReservedUshort

PortVersionFlags

Флаги для указания поддерживаемых функций.

DeviceIdLength

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

DeviceId

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

HwAdapterControl

Указатель на подпрограмму HwStorAdapterControl драйвера miniport. Это обязательная процедура, так как для драйверов минипорта, работающих с драйвером Storport, требуется поддержка PnP.

HwBuildIo

Указатель на необязательную подпрограмму HwStorBuildIo , которую драйвер портов вызывает для выполнения несинхронизированной обработки перед вызовом подпрограммы HwStorStartIo драйвера минипорта. Этот обратный вызов зависит от физических мини-портов и должен иметь значение NULL виртуальными минипортами.

HwFreeAdapterResources

Указатель на подпрограмму HwStorFreeAdapterResources драйвера виртуального минипорта, которая является обязательной точкой входа для всех виртуальных драйверов минипорта. Этот обратный вызов предназначен для виртуальных мини-портов и имеет значение NULL для физических мини-портов.

Этот обратный вызов добавляется в Windows 8. Виртуальные минипорты для предыдущих версий Windows должны использовать VIRTUAL_HW_INITIALIZATION_DATA вместо этой структуры.

HwProcessServiceRequest

Указатель на подпрограмму HwStorProcessServiceRequest драйвера виртуального минипорта. Этот обратный вызов предназначен для виртуальных мини-портов и имеет значение NULL для физических мини-портов.

Этот обратный вызов добавляется в Windows 8. Виртуальные минипорты для предыдущих версий Windows должны использовать VIRTUAL_HW_INITIALIZATION_DATA вместо этой структуры.

HwCompleteServiceIrp

Указатель на подпрограмму HwStorCompleteServiceIrp драйвера виртуального минипорта. Этот обратный вызов предназначен для виртуальных мини-портов и имеет значение NULL для физических мини-портов.

Этот обратный вызов добавляется в Windows 8. Виртуальные минипорты для предыдущих версий Windows должны использовать VIRTUAL_HW_INITIALIZATION_DATA вместо этой структуры.

HwInitializeTracing

Указатель на подпрограмму HwStorInitializeTracing драйвера виртуального минипорта. Этот обратный вызов предназначен для виртуальных мини-портов и имеет значение NULL для физических мини-портов.

Этот обратный вызов добавляется в Windows 8. Виртуальные мини-порты для предыдущих версий Windows должны использовать VIRTUAL_HW_INITIALIZATION_DATA вместо этой структуры.

HwCleanupTracing

Указатель на подпрограмму HwStorCleanupTracing драйвера виртуального мини-порта. Этот обратный вызов предназначен для виртуальных мини-портов и имеет значение NULL для физических мини-портов.

Этот обратный вызов добавляется в Windows 8. Виртуальные мини-порты для предыдущих версий Windows должны использовать VIRTUAL_HW_INITIALIZATION_DATA вместо этой структуры.

HwTracingEnabled

Указатель на необязательную подпрограмму HwStorTracingEnabled , которая вызывает драйвер порта, чтобы уведомить минипорт о том, включена ли трассировка.

FeatureSupport

Флаги, указывающие функции, поддерживаемые мини-портом. ФункцияSupport имеет сочетание следующих значений:

Значение Значение
STOR_FEATURE_VIRTUAL_MINIPORT Это виртуальный минипорт-драйвер.
STOR_FEATURE_ATA_PASS_THROUGH Минипорт поддерживает сквозную передачу ATA.
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES Минипорт предоставляет полные параметры в структуре STOR_DEVICE_CAPABILITIES_EX .
STOR_FEATURE_DUMP_POINTERS Минипорт поддерживает указатели дампа SRB.
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX Минипорт-драйвер не хочет, чтобы суффикс "Устройство типа SCSI" был частью понятного имени устройства.
STOR_FEATURE_DUMP_RESUME_CAPABLE Возможность дампа мини-порта работает для возобновления с гибернации.
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD Драйвер Storport инициализирует STORAGE_DEVICE_DESCRIPTOR со страницы ATA Information VPD вместо данных ЗАПРОСА.
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE Драйвер Storport задает тип интерфейса адаптера.

SrbTypeFlags

Флаги, указывающие типы SRB, поддерживаемые мини-портом. Для SrbTypeFlags задано значение 0 или сочетание следующих значений:

Значение Значение
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK Минипорт использует стандартные SRB.
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK Минипорт поддерживает расширенные SRB.

AddressTypeFlags

Схемы адресов, поддерживаемые мини-портом. В настоящее время поддерживается только одна схема адресов, а мини-порт должен задать для этого элемента значение ADDRESS_TYPE_FLAG_BTL8.

Значение Значение
ADDRESS_TYPE_FLAG_BTL8 8-разрядная адресация шины, целевого объекта и LUN (BTL).

Reserved1

Зарезервировано, задайте значение 0.

HwUnitControl

Указатель на подпрограмму HwStorUnitControl драйвера miniport. Драйвер порта вызывает эту подпрограмму с запросом управления для устройства единицы хранения.

Комментарии

Каждый подпрограмма DriverEntry драйвера miniport Storport должна вызывать StorPortInitialize после того, как драйвер мини-порта сначала обнулился, а затем задать элементы HW_INITIALIZATION_DATA.

Требования

   
Заголовок storport.h (include Storport.h)