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

Структура VIRTUAL_HW_INITIALIZATION_DATA содержит сведения, определенные для каждого виртуального драйвера мини-порта.

Синтаксис

typedef struct _VIRTUAL_HW_INITIALIZATION_DATA {
  ULONG                       HwInitializationDataSize;
  INTERFACE_TYPE              AdapterInterfaceType;
  PHW_INITIALIZE              HwInitialize;
  PHW_STARTIO                 HwStartIo;
  PHW_INTERRUPT               HwInterrupt;
  PVIRTUAL_HW_FIND_ADAPTER    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;
} VIRTUAL_HW_INITIALIZATION_DATA, *PVIRTUAL_HW_INITIALIZATION_DATA;

Члены

HwInitializationDataSize

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

AdapterInterfaceType

Для драйверов виртуальных мини-портов storport значение AdapterInterfaceType почти всегда будет внутренним. Это связано с тем, что драйвер Storport не поддерживает устаревшие автобусы.

Обратите внимание, что из-за этого большинство типов интерфейсов адаптера, используемых с драйвером порта SCSI, недопустимы для драйверов Storport. В частности, Storport не поддерживает:

  • Isa
  • Eisa
  • Микроканальные
  • TurboChannel

Кроме того, в отличие от порта SCSI, драйвер виртуального минипорта, работающий с драйвером Storport, не требуется предоставлять значения для следующих элементов:

  • VendorIdLength
  • VendorId
  • DeviceIdLength
  • DeviceId

HwInitialize

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

HwStartIo

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

HwInterrupt

Не используется. Драйверы виртуальных мини-портов не обрабатывают прерывания.

HwFindAdapter

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

HwResetBus

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

HwDmaStarted

Не используется. Драйверы виртуальных мини-портов не выполняют DMA.

HwAdapterState

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

DeviceExtensionSize

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

SpecificLuExtensionSize

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

SrbExtensionSize

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

NumberOfAccessRanges

Не используется. Драйверы виртуальных мини-портов не поддерживают оборудование.

Reserved

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

MapBuffers

Имя Описание
STOR_MAP_NO_BUFFERS Сопоставляет буфер только для 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 Сопоставляет буфер для всех запросов ввода-вывода, включая чтение и запись. Как правило, этот параметр используется в драйверах мини-портов.

NeedPhysicalAddresses

Не используется. Драйверы виртуальных мини-портов не поддерживают оборудование.

TaggedQueuing

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

AutoRequestSense

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

MultipleRequestPerLu

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

ReceiveEvent

Это значение больше не используется и может иметь значение TRUE или FALSE.

VendorIdLength

Длина идентификатора поставщика (в байтах).

VendorId

Идентификатор поставщика.

ReservedUshort

Зарезервировано.

PortVersionFlags

Растровое изображение флагов, обозначающее функции, поддерживаемые драйвером портов. В настоящее время единственным доступным флагом является SP_VER_TRACE_SUPPORT, который указывает, что драйвер порта поддерживает трассировку.

DeviceIdLength

Длина идентификатора устройства (в байтах).

DeviceId

Идентификатор устройства.

HwAdapterControl

Указатель на подпрограмму HwStorAdapterControl драйвера виртуального мини-порта.

HwBuildIo

Этот элемент не используется.

HwFreeAdapterResources

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

HwProcessServiceRequest

Указатель на подпрограмму HwStorProcessServiceRequest драйвера виртуального мини-порта.

HwCompleteServiceIrp

Указатель на подпрограмму HwStorCompleteServiceIrp драйвера виртуального мини-порта.

HwInitializeTracing

Указатель на подпрограмму HwStorInitializeTracing драйвера виртуального мини-порта.

HwCleanupTracing

Указатель на подпрограмму HwStorCleanupTracing драйвера виртуального мини-порта.

Комментарии

Если драйвер виртуального мини-порта будет выполняться только в Windows 8 или более поздней версии, драйвер должен использовать структуру HW_INITIALIZATION_DATA вместо VIRTUAL_HW_INITIALIZATION_DATA.

Требования

Требование Значение
Заголовок storport.h (включая Storport.h)

См. также раздел

HwStorAdapterControl

HwStorCleanupTracing

HwStorCompleteServiceIrp

HwStorFreeAdapterResources

HwStorInitialize

HwStorInitializeTracing

HwStorProcessServiceRequest

HwStorResetBus

HwStorStartIo

VirtualHwStorFindAdapter