структура 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) |