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


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

Подпрограмма DriverEntry каждого драйвера SCSI miniport должна инициализироваться с нулями, а затем заполнить соответствующие сведения о 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 драйвера мини-порта, которая является обязательной точкой входа для всех драйверов мини-портов. Прототипом этой процедуры является PHW_INITIALIZE.

HwStartIo

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

HwInterrupt

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

HwFindAdapter

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

HwResetBus

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

HwDmaStarted

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

HwAdapterState

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

DeviceExtensionSize

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

SpecificLuExtensionSize

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

SrbExtensionSize

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

NumberOfAccessRanges

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

Reserved

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

MapBuffers

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

NeedPhysicalAddresses

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

TaggedQueuing

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

AutoRequestSense

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

MultipleRequestPerLu

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

ReceiveEvent

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

VendorIdLength

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

VendorId

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

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

ReservedUshort

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

PortVersionFlags

DeviceIdLength

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

DeviceId

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

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

HwAdapterControl

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

Комментарии

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

Член Dma64BitAddresses HW_INITIALIZATION_DATA был исключен в 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 (включая Srb.h, Strmini.h)

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

DriverEntry of SCSI Miniport Driver

HwScsiInitialize

SCSI_REQUEST_BLOCK

ScsiPortInitialize