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


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