структура 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 драйвера мини-порта должна задать значение этого члена для драйвера порта.
AdapterInterfaceType
Драйвер Storport не поддерживает устаревшие автобусы. Поэтому большинство типов интерфейсов адаптеров, используемых с драйвером порта SCSI, недопустимы для Storport. В частности, не поддерживаются Isa, Eisa, MicroChannel и TurboChannel . Кроме того, в отличие от варианта порта SCSI, драйвер мини-порта, работающий с драйвером Storport, не требуется для предоставления значений элементов VendorIdLength, VendorId, DeviceIdLength и DeviceId .
HwInitialize
Указатель на подпрограмму HwStorInitialize водителя мини-порта, которая является обязательной точкой входа для всех водителей минипорта.
HwStartIo
Указатель на подпрограмму HwStorStartIo водителя мини-порта, которая является обязательной точкой входа для всех драйверов минипорта.
HwInterrupt
Указатель на подпрограмму HwStorInterrupt водителя мини-порта, которая является обязательной точкой входа для всех водителей минипорта.
HwFindAdapter
Указатель на подпрограмму HwStorFindAdapter водителя мини-порта, которая является обязательной точкой входа для всех водителей минипорта.
HwResetBus
Указатель на подпрограмму HwStorResetBus водителя мини-порта, которая является обязательной точкой входа для всех водителей минипорта.
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-разрядные адреса независимо от того, что контроллер фактически поддерживает. Если в расширениях LUN или SRB требуется дополнительное пространство для обработки 64-разрядных адресов, то перед использованием этого значения с такими подпрограммами, как StorPortGetUncachedExtension, необходимо внести соответствующие корректировки.
SrbExtensionSize
Указывает размер в байтах, необходимый драйверу мини-порта для хранилища по запросу, если таковой есть. Драйвер мини-порта может использовать расширения SRB в качестве хранилища для определяемых драйвером сведений о конкретных запросах, таких как данные, необходимые для обработки определенного запроса. Драйвер Storport не инициализирует расширения SRB, но задает указатель на это хранилище в каждом SRB, отправляемом драйверу мини-порта. Аппаратное обеспечение HBA может безопасно получить доступ к расширению SRB. Так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать точечные и собираемые списки, а списки точечной и сборной по SRB обычно выделяются в расширении SRB, этот элемент редко равен нулю. Оставьте этот элемент равным нулю, если драйвер мини-порта не поддерживает сведения по SRB, для которых ему требуется хранилище.
Это значение основано на предположении, что HBA может получать 32-разрядные адреса независимо от того, что контроллер фактически поддерживает. Если в расширениях LUN или SRB требуется дополнительное пространство для обработки 64-разрядных адресов, то перед использованием этого значения с такими подпрограммами, как 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, должны поддерживать шины master DMA, поэтому они всегда должны выполнять перевод адресов.
TaggedQueuing
Должно быть задано значение TRUE. Значение TRUE указывает, что драйвер мини-порта поддерживает очереди с тегами SCSI. Все драйверы минипорта, работающие с драйвером Storport, должны поддерживать очереди с тегами.
AutoRequestSense
Должно иметь значение TRUE. Значение TRUE указывает, что HBA может выполнять операцию со смыслом запроса, не требуя для этого явного запроса. Все драйверы минипорта, работающие с драйвером Storport, должны поддерживать контроль автозапроса SCSI.
MultipleRequestPerLu
Должно быть задано значение TRUE. Значение TRUE указывает, что драйвер мини-порта может ставить в очередь несколько запросов на логическую единицу. Драйверы miniport, работающие с драйвером Storport, должны поддерживать несколько запросов на логическую единицу.
ReceiveEvent
Драйвер Storport игнорирует этот элемент.
VendorIdLength
Драйвер Storport игнорирует этот элемент, так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать PnP.
VendorId
Драйвер Storport игнорирует этот элемент, так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать PnP.
ReservedUshort
PortVersionFlags
Флаги для обозначения поддерживаемых функций.
DeviceIdLength
Драйвер Storport игнорирует этот элемент, так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать PnP.
DeviceId
Драйвер Storport игнорирует этот элемент, так как драйверы минипорта, работающие с драйвером Storport, должны поддерживать PnP.
HwAdapterControl
Указатель на подпрограмму HwStorAdapterControl драйвера мини-порта. Это обязательная процедура, так как для драйверов минипорта, работающих с драйвером Storport, требуется поддержка PnP.
HwBuildIo
Указатель на необязательную подпрограмму HwStorBuildIo , которую драйвер портов вызывает для выполнения несинхронной обработки перед вызовом подпрограммы HwStorStartIo драйвера miniport. Этот обратный вызов предназначен для физических минипортов и должен иметь значение 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
Флаги, указывающие функции, поддерживаемые мини-портом. Для featureSupport задано сочетание следующих значений:
Значение | Значение |
---|---|
STOR_FEATURE_VIRTUAL_MINIPORT | Это виртуальный драйвер минипорта. |
STOR_FEATURE_ATA_PASS_THROUGH | Мини-порт поддерживает проход ATA. |
STOR_FEATURE_FULL_PNP_DEVICE_CAPABILITIES | Мини-порт предоставляет полные параметры в своей STOR_DEVICE_CAPABILITIES_EX структуре. |
STOR_FEATURE_DUMP_POINTERS | Мини-порт поддерживает SSP-файлы указателей дампа. |
STOR_FEATURE_DEVICE_NAME_NO_SUFFIX | Драйверу мини-порта не нужен суффикс "Устройство типа SCSI" в составе понятного имени устройства. |
STOR_FEATURE_DUMP_RESUME_CAPABLE | Возможность дампа мини-порта работает для возобновления из гибернации. |
STOR_FEATURE_DEVICE_DESCRIPTOR_FROM_ATA_INFO_VPD | Драйвер Storport инициализирует STORAGE_DEVICE_DESCRIPTOR со страницы СВЕДЕНИЙ О VPD ATA, а не из данных ЗАПРОСА. |
STOR_FEATURE_SET_ADAPTER_INTERFACE_TYPE | Драйвер Storport задает тип интерфейса адаптера. |
SrbTypeFlags
Флаги, указывающие типы SRB, поддерживаемые мини-портом. SrbTypeFlags имеет значение 0 или сочетание следующих значений:
Значение | Значение |
---|---|
SRB_TYPE_FLAG_SCSI_REQUEST_BLOCK | Мини-порт использует стандартные SSPB. |
SRB_TYPE_FLAG_STORAGE_REQUEST_BLOCK | Мини-порт поддерживает расширенные SDB-файлы. |
AddressTypeFlags
Схемы адресов, поддерживаемые мини-портом. В настоящее время поддерживается только одна схема адресов, и мини-порт должен задать для этого элемента значение ADDRESS_TYPE_FLAG_BTL8.
Значение | Значение |
---|---|
ADDRESS_TYPE_FLAG_BTL8 | 8-разрядная адресация в шине, целевом объекте и 8-разрядной адресации LUN (BTL). |
Reserved1
Зарезервировано, задайте значение 0.
HwUnitControl
Указатель на подпрограмму HwStorUnitControl драйвера miniport. Драйвер порта вызывает эту подпрограмму с запросом управления для устройства запоминающего устройства.
Комментарии
Каждая подпрограмма DriverEntry драйвера порта Storport должна вызывать StorPortInitialize после того, как драйвер мини-порта сначала обнуляется, а затем задает элементы HW_INITIALIZATION_DATA.
Требования
Требование | Значение |
---|---|
Заголовок | storport.h (включая Storport.h) |