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

Каждая подпрограмма DriverEntry драйвера мини-порта SCSI должна инициализироваться с нулями, а затем введите соответствующие сведения о HW_INITIALIZATION_DATA (SCSI) для драйвера порта для конкретной ОС.

Примечание В будущем драйвер портов SCSI и модели драйверов мини-порта SCSI могут быть изменены или недоступны. Вместо этого рекомендуется использовать драйверы Storport и модели драйверов мини-порта Storport .
 

Синтаксис

typedef struct _HW_INITIALIZATION_DATA {
  ULONG               HwInitializationDataSize;
  INTERFACE_TYPE      AdapterInterfaceType;
  PHW_INITIALIZE      HwInitialize;
  PHW_STARTIO         HwStartIo;
  PHW_INTERRUPT       HwInterrupt;
  PHW_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;
  BOOLEAN             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;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;

Участники

HwInitializationDataSize

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

AdapterInterfaceType

Указывает тип шины ввода-вывода, к которому подключенА HBA, которая может быть одной из следующих: Internal, Isa, Eisa, MicroChannel, TurboChannel или PCIBus. Однако в будущем будут поддерживаться дополнительные типы автобусов. Верхняя граница поддерживаемых типов автобусов всегда является MaximumInterfaceType.

Если для этого параметра задано значение PCIBus, мини-порт должен указать значения для членов VendorIdLength, VendorId, DeviceIdLength и DeviceId, описанных далее.

HwInitialize

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

HwStartIo

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

HwInterrupt

Указатель на подпрограмму HwScsiInterrupt драйвера мини-порта, которая является обязательной точкой входа для любого драйвера мини-порта HBA, который создает прерывания. Задайте значение NULL , если драйвер мини-порта не нуждается в isR. Прототип этой подпрограммы PHW_INTERRUPT.

HwFindAdapter

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

HwResetBus

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

HwDmaStarted

Указатель на подпрограмму HwScsiDmaStarted драйвера miniport, если его HBA использует системный DMA, то есть системный контроллер DMA. Присвойте этому параметру значение NULL , если HBA является главной шиной или использует piO. Прототип этой подпрограммы PHW_DMA_STARTED.

HwAdapterState

Указатель на подпрограмму HwScsiAdapterState драйвера минипорта, которая является обязательной точкой входа для драйверов мини-порта HBAs с BIOS, связанными с драйвером порта, зависящим от операционной системы, драйвером портов только x86, который должен переключаться между защищенными и реальными режимами процессора x86. Если драйверу мини-порта не требуется подпрограмма HwScsiAdapterState , задайте для этого элемента значение NULL. Мини-драйвер для HBA с BIOS должен иметь подпрограмму HwScsiAdapterState, чтобы быть совместимым с драйвером порта x86 и переносимым в среду операционной системы только x86. Прототип этой подпрограммы — это PHW_ADAPTER_STATE.

DeviceExtensionSize

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

SpecificLuExtensionSize

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

SrbExtensionSize

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

NumberOfAccessRanges

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

Reserved

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

MapBuffers

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

NeedPhysicalAddresses

Указывает, когда значение TRUE, драйвер мини-порта должен перевести свое устройство, любые адреса расширений lu и все адреса расширений SRB, а также адреса буфера SRB на физические адреса, в соответствии с требованиями HBA. Если значение FALSE, ни один из этих адресов не должен быть преобразован в физические адреса.

TaggedQueuing

Указывает, когда значение TRUE, этот минипорт-драйвер может поддерживать очередь с тегами SCSI. Если значение FALSE, мини-порт драйвер не может поддерживать очередь с тегами SCSI.

AutoRequestSense

Указывает, что если значение TRUE, HBA может выполнять операцию "чувство запроса", не требуя явного запроса. Если значение FALSE, для HBA требуется явный запрос, прежде чем он сможет выполнить операцию с чувством запроса. Для выполнения операций управления запросом для выполнения операций с интерфейсом управления запросами этот элемент должен иметь значение TRUE только для мини-драйверов, движущих HBA с встроенным встроенном ПО.

MultipleRequestPerLu

Указывает, когда значение TRUE, драйвер мини-порта может помещает в очередь несколько запросов на логическую единицу, в частности, в пределах HBA. Если задано значение FALSE, драйвер мини-порта не может очереди нескольких запросов на логическую единицу. Обратите внимание, что HBA должен поддерживать функцию автоматического запроса для своего мини-драйвера, чтобы включить эту функцию. Если драйвер мини-порта устанавливает для этого элемента значение TRUE, он должен использовать каждый член очереди SRB для запросов этого типа, но SRB_FLAGS_QUEUE_ACTION_ENABLE не задан в элементе SrbFlags структуры SCSI_REQUEST_BLOCK.

ReceiveEvent

Указывает, что при значении TRUE драйвер мини-порта управляет HBA, который может поддерживать SRB событий получения для асинхронных событий SCSI. Если значение FALSE, HBA не может поддерживать SRB события получения для асинхронных событий SCSI.

VendorIdLength

Задает размер в байтах строки VendorId , описанной далее.

VendorId

Указатель на строку байтов ASCII, определяющую производителя HBA. Этот элемент не имеет значения для Plug and Play драйверов.

Если данный AdapterInterfaceType имеет значение PCIBus, идентификатор поставщика — это значение USHORT, выделенное PCI SIG, которое должно быть преобразовано в строку байтов драйвером мини-порта. Например, если присвоенное значение идентификатора поставщика PCI равно 1001, строка VendorId , предоставляемая драйвером мини-порта, будет иметь значение ("1", "0", "0", "1").

ReservedUshort

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

PortVersionFlags

DeviceIdLength

Задает размер в байтах строки DeviceId , описанной далее.

DeviceId

Указатель на строку байтов ASCII, определяющую модели HBA, поддерживаемые драйвером мини-порта. Этот элемент не имеет значения для Plug and Play драйверов.

Если данный АдаптерInterfaceType имеет тип PCIBus, идентификатор устройства — это значение USHORT, назначенное производителем HBA. Минипорт-драйвер должен преобразовать любые значения идентификатора устройства PCI для HBA, которые он может поддерживать в строки байтов DeviceId , как и для члена VendorId . Например, если мини-драйвер может поддерживать HBAs с идентификаторами устройств PCI 8040 и 8050, он может задать DeviceId с указателем на строку байтов ("8", "0").

HwAdapterControl

Указатель на подпрограмму HwScsiAdapterControl драйвера miniport, которая является обязательной точкой входа для всех драйверов мини-порта PnP. Задайте значение NULL, если мини-порт не поддерживает Plug and Play.

Примечания

Каждый драйвер минипорта должен инициализировать структуру HW_INITIALIZATION_DATA с нулями, прежде чем задать значения соответствующих элементов в этой структуре и вызывать ScsiPortInitialize.

Член HW_INITIALIZATION_DATA Dma64BitAddresses был исключен в Windows 2000 (дополнительные сведения см. в разделе PORT_CONFIGURATION_DATA обсуждения).

Оба HW_INITIALIZATION_DATA и PORT_CONFIGURATION_INFORMATION имеют пару элементов SpecificLuExtensionSize и SrbExtensionSize , значения которых обрабатываются иначе, чем до Windows 2000. Драйвер минипорта должен вычислить начальные значения SpecificLuExtensionSize и SrbExtensionSize в HW_INITIALIZATION_DATA на основе предположения, что HBA способен обрабатывать 32-разрядные адреса независимо от того, что контроллер может поддерживать. (Дополнительные сведения см. в разделе PORT_CONFIGURATION_DATA.)

Требования

   
Заголовок srb.h (include Srb.h, Strmini.h)

См. также

DriverEntry драйвера минипорта SCSI

HwScsiInitialize

SCSI_REQUEST_BLOCK

ScsiPortInitialize