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

PORT_CONFIGURATION_INFORMATION (SCSI) содержит сведения о конфигурации адаптера безопасности. Драйвер портов, зависящий от ОС, выделяет и инициализирует эту структуру, предоставляет как можно больше сведений о конфигурации, относящихся к HWSCSIFindAdapter, и передает структуру в подпрограмму HwScsiFindAdapter драйвера мини-порта. Драйвер порта получает некоторые сведения для этой структуры из структуры HW_INITIALIZATION_DATA драйвера мини-порта. Подпрограмма HwScsiFindAdapter драйвера мини-порта отвечает за определение того, может ли драйвер минипорта поддерживать HBA, и, если да, за заполнение соответствующей оставшейся информации в структуре PORT_CONFIGURATION_INFORMATION.

Примечание

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

Синтаксис

typedef struct _PORT_CONFIGURATION_INFORMATION {
  ULONG           Length;
  ULONG           SystemIoBusNumber;
  INTERFACE_TYPE  AdapterInterfaceType;
  ULONG           BusInterruptLevel;
  ULONG           BusInterruptVector;
  KINTERRUPT_MODE InterruptMode;
  ULONG           MaximumTransferLength;
  ULONG           NumberOfPhysicalBreaks;
  ULONG           DmaChannel;
  ULONG           DmaPort;
  DMA_WIDTH       DmaWidth;
  DMA_SPEED       DmaSpeed;
  ULONG           AlignmentMask;
  ULONG           NumberOfAccessRanges;
  ACCESS_RANGE( )   *AccessRanges[];
  PVOID           Reserved;
  UCHAR           NumberOfBuses;
  UCHAR           InitiatorBusId[8];
  BOOLEAN         ScatterGather;
  BOOLEAN         Master;
  BOOLEAN         CachesData;
  BOOLEAN         AdapterScansDown;
  BOOLEAN         AtdiskPrimaryClaimed;
  BOOLEAN         AtdiskSecondaryClaimed;
  BOOLEAN         Dma32BitAddresses;
  BOOLEAN         DemandMode;
  BOOLEAN         MapBuffers;
  BOOLEAN         NeedPhysicalAddresses;
  BOOLEAN         TaggedQueuing;
  BOOLEAN         AutoRequestSense;
  BOOLEAN         MultipleRequestPerLu;
  BOOLEAN         ReceiveEvent;
  BOOLEAN         RealModeInitialized;
  BOOLEAN         BufferAccessScsiPortControlled;
  UCHAR           MaximumNumberOfTargets;
  UCHAR           ReservedUchars[2];
  ULONG           SlotNumber;
  ULONG           BusInterruptLevel2;
  ULONG           BusInterruptVector2;
  KINTERRUPT_MODE InterruptMode2;
  ULONG           DmaChannel2;
  ULONG           DmaPort2;
  DMA_WIDTH       DmaWidth2;
  DMA_SPEED       DmaSpeed2;
  ULONG           DeviceExtensionSize;
  ULONG           SpecificLuExtensionSize;
  ULONG           SrbExtensionSize;
  UCHAR           Dma64BitAddresses;
  BOOLEAN         ResetTargetSupported;
  UCHAR           MaximumNumberOfLogicalUnits;
  BOOLEAN         WmiDataProvider;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Члены

Length

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

SystemIoBusNumber

Указывает назначаемый системой номер шины ввода-вывода, к которой подключен адаптер HBA. Драйвер порта операционной системы всегда инициализирует этот элемент. Его значение присваивается системе, так как платформа может иметь несколько шин ввода-вывода заданного AdapterInterfaceType.

AdapterInterfaceType

Определяет интерфейс шины ввода-вывода. Драйвер портов, зависящий от ОС, всегда задает этому элементу значение, заданное драйвером мини-порта в структуре HW_INITIALIZATION_DATA (SCSI).

BusInterruptLevel

Указывает уровень запроса прерывания относительно шины. Драйвер портов, зависящий от ОС, не делает никаких предположений об использовании прерываний HBA, поэтому значение по умолчанию равно нулю. В зависимости от заданного типа AdapterInterfaceType и HBA значение, заданное для этого элемента, может соответствовать irQL для шины, например для автобусов типа Isa и MicroChannel . Драйверы Eisa HBA должны задать это значение относительно шины IRQL для адаптера HBA, если адаптер настроен для прерываний, чувствительных к уровню.

BusInterruptVector

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

InterruptMode

Указывает, использует ли HBA прерывания LevelSensitive или Latched (иногда называемые "триггером ребра"). Драйвер порта операционной системы инициализирует этот элемент соответствующим значением для шины и устройства, например LevelSensitive для PCIBus. Драйверы Eisa HBA должны сбрасывать это значение, если адаптер настроен для прерываний, чувствительных к уровню, как и драйверы HBA на автобусах ввода-вывода, которые используют чувствительные к уровню прерывания, такие как автобусы типа MicroChannel .

MaximumTransferLength

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

NumberOfPhysicalBreaks

Указывает максимальное количество разрывов между диапазонами адресов, которое может иметь буфер данных, если HBA поддерживает точечную и сборную. Иными словами, количество списков точечной/собираемой за вычетом единицы. По умолчанию значение этого элемента равно SP_UNINITIALIZED_VALUE, что указывает, что HBA может поддерживать неограниченное количество физических несоответствий. Если драйвер порта задает значение для этого элемента, драйвер мини-порта может изменить значение ниже, но не выше. Если этот элемент SP_UNINITIALIZED_VALUE, драйвер мини-порта должен сбросить этот элемент в соответствии с емкостью точечной и сборной данных HBA, при этом нуль не представляет поддержку точечной и сборной.

DmaChannel

Указывает канал DMA, используемый подчиненным адаптером HBA. По умолчанию значение этого элемента равно SP_UNINITIALIZED_VALUE. Если адаптер HBA использует системный контроллер DMA и заданным значением AdapterInterfaceType является любое значение, кроме MicroChannel, драйвер мини-порта должен сбросить этот элемент.

DmaPort

Указывает порт DMA, используемый подчиненным адаптером HBA. По умолчанию значение этого элемента равно SP_UNINITIALIZED_VALUE. Если адаптер HBA использует системный контроллер DMA и заданным типом AdapterInterfaceType является MicroChannel, драйвер мини-порта должен задать этот член.

DmaWidth

Указывает ширину передачИ DMA, если HBA использует DMA. По умолчанию значение этого элемента равно нулю. Если адаптер HBA выполняет DMA, драйвер мини-порта должен сбросить этот член до одного из следующих значений: Width8Bits, Width16Bits или Width32Bits.

DmaSpeed

Указывает скорость передачи данных DMA для Eisa HBA. По умолчанию значение этого элемента указывает время совместимости. Допустимые значения для этого элемента: Compatible, TypeA, TypeB или TypeC.

AlignmentMask

Содержит маску, указывающую ограничения выравнивания для буферов, необходимых адаптеру HBA для операций передачи. Допустимые значения маски также ограничены характеристиками диспетчеров памяти в разных версиях Windows. Значения маски, допустимые в Windows 95 или Windows 98: 0 (выравнивание по байтам), 1 (выравнивание по словам) или 3 (выравнивание по DWORD). В Windows NT и Windows 2000 допустимые значения маски: 0 (выравнивание по байтам), 1 (выравнивание по словам), 3 (выравнивание DWORD) и 7 (двойное выравнивание DWORD). Драйвер мини-порта должен установить эту маску, если HBA поддерживает точечную и сборную.

NumberOfAccessRanges

Указывает количество элементов AccessRanges в массиве, описанных далее. Драйвер портов, зависящий от ОС, всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA, когда драйвер мини-порта с именем ScsiPortInitialize.

AccessRanges

Reserved

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

NumberOfBuses

Указывает количество шин SCSI, управляемых адаптером безопасности. По умолчанию значение этого элемента равно нулю.

InitiatorBusId[8]

Указывает идентификатор шины инициатора. Если входное значение InitiatorBusId[0] равно нулю, драйвер мини-порта может назначить значение по умолчанию, если его адаптер HBA не требует использования определенных значений, определенных запросом к адаптеру HBA. В противном случае драйвер мини-порта должен использовать любое ненулевое значение, присвоенное драйвером порта, если это возможно. Каждый драйвер мини-порта должен обновлять спецификации InitiatorBusId в соответствии с тем, что использует его адаптер HBA, при необходимости запрашивая адаптер для определения соответствующих значений.

Драйвер мини-порта должен задать запись для каждой шины SCSI, поддерживаемой HBA, как указано в значении NumberOfBuses.

ScatterGather

Указывает значение true , что HBA поддерживает точечные и сборные. При значении FALSE HBA не поддерживает точечную и сборную. По умолчанию этот элемент имеет значение FALSE.

Master

Указывает значение true, что HBA является master автобуса. При значении FALSE HBA не является автобусным master. По умолчанию этот элемент имеет значение FALSE.

CachesData

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

AdapterScansDown

Указывает, когда значение TRUE , BIOS для адаптера безопасности проверяет целевые объекты шины SCSI от семи до нуля. При значении FALSE BIOS для HBA ищет целевые объекты шины SCSI, начиная с нулевого идентификатора и сканируя вверх до (но не включая) MaximumTargetIds. По умолчанию значение AdapterScansDown равно FALSE.

AtdiskPrimaryClaimed

Указывает, когда значение TRUE указывает, что основной диапазон адресов диска "AT" (совместимый с WD1003), 0x1F0 0x1FF, был запрошен в реестре другим драйвером для своего устройства. Драйвер порта операционной системы всегда инициализирует этот элемент. Если входное значение этого элемента равно TRUE, драйвер мини-порта должен предполагать, что уже загруженный драйвер утверждал диапазон устройств. Если входное значение равно FALSE, драйвер мини-порта может претендовать на диапазон адресов для контроллера HBA, эмулирующего контроллер диска "AT", и сбросить этот элемент в значение TRUE, тем самым блокируя доступ к этому диапазону драйвером диска "AT" или впоследствии загруженными драйверами мини-порта.

AtdiskSecondaryClaimed

Указывает, когда значение TRUE указывает, что диапазон адресов дополнительного диска AT, 0x170 0x17F, был запрошен в реестре другим драйвером для своего устройства. При значении FALSE диапазон адресов дополнительного диска AT не был заявлен в реестре другим драйвером. Драйвер порта операционной системы всегда инициализирует этот элемент. Драйверы мини-порта должны рассматривать этот элемент как atdiskPrimaryClaimed.

Dma32BitAddresses

Указывает при значении TRUE , что HBA имеет 32 адресные строки и может получить доступ к памяти с физическими адресами, превышающими 0x00FFFFFF. При значении FALSE адаптер HBA имеет несколько строк адресов DMA, отличных от 32. По умолчанию этот элемент имеет значение FALSE. Если драйвер мини-порта задает значение Dma64BitAddresses, этот элемент должен иметь значение FALSE.

DemandMode

Указывает значение true , что системный контроллер DMA должен быть запрограммирован для работы в режиме по требованию, а не для одноцикловых операций. Если HBA не является подчиненным устройством, этот элемент должен иметь значение FALSE.

MapBuffers

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

NeedPhysicalAddresses

Указывает значение TRUE , что драйвер мини-порта должен преобразовывать виртуальные адреса в физические адреса в соответствии с требованиями адаптера шины. Если задано значение FALSE, драйверу мини-порта не нужно преобразовывать виртуальные адреса в физические. Драйвер порта для конкретной ОС всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер минипорта называется ScsiPortInitialize. Драйвер мини-порта может сбросить это значение для любого конкретного HBA, который он управляет.

TaggedQueuing

Указывает значение TRUE , что HBA поддерживает очередь из нескольких запросов с тегами SCSI. Если задано значение FALSE, HBA не поддерживает очередь с тегами SCSI. Драйвер порта для конкретной ОС всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер минипорта называется ScsiPortInitialize. Драйвер мини-порта может сбросить это значение для любого конкретного HBA, который он управляет.

AutoRequestSense

Указывает значение TRUE , что HBA поддерживает автозапрос. При значении FALSE адаптер HBA не поддерживает функцию автоматического запроса. Драйвер порта для конкретной ОС всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер минипорта называется ScsiPortInitialize. Драйвер мини-порта может сбросить это значение для любого конкретного HBA, который он управляет. Этот элемент должен иметь значение TRUE, прежде чем драйвер master шины HBA вызовет ScsiPortGetUncachedExtension.

MultipleRequestPerLu

Указывает значение TRUE , что HBA поддерживает несколько запросов на логическую единицу. При значении FALSE адаптер HBA не поддерживает несколько запросов на логическую единицу. Механизм, с помощью которого адаптер кэширует запросы, определяется адаптером. Драйвер порта для конкретной ОС всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер минипорта называется ScsiPortInitialize. Драйвер мини-порта может сбросить это значение для любого конкретного HBA, который он управляет.

ReceiveEvent

Указывает значение TRUE , что HBA поддерживает операции получения событий SCSI. При значении FALSE адаптер HBA не поддерживает операции получения событий SCSI. Драйвер порта для конкретной ОС всегда задает этому члену значение, передаваемое в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер минипорта называется ScsiPortInitialize. Драйвер мини-порта может сбросить это значение для любого конкретного HBA, который он управляет.

RealModeInitialized

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

BufferAccessScsiPortControlled

Указывает, что при значении TRUE драйвер мини-порта всегда вызывает ScsiPortXxx для доступа к буферам данных и /или информации о смысле запросов в srb, что позволяет драйверу портов для конкретной ОС оптимизировать обработку запросов ввода-вывода. При значении FALSE драйверу мини-порта не нужно вызывать подпрограммы ScsiPortXxx для доступа к буферам данных или информации о смысле запроса. Установка для этого элемента значения FALSE может снизить производительность ввода-вывода адаптера. Вызов процедур, отличных от ScsiPortXxx , делает драйвер минипорта непортируемым в операционных системах Майкрософт.

MaximumNumberOfTargets

Указывает количество целевых периферийных устройств, которые может контролировать HBA. По умолчанию значение этого элемента равно SCSI_MAXIMUM_TARGETS в соответствии со стандартом SCSI. Драйвер мини-порта может сбросить этот элемент на меньшее значение, если HBA имеет более ограниченные возможности или большее значение, указывающее, что HBA имеет широкие возможности SCSI или Fibre Channel. Это значение ограничено SCSI_MAXIMUM_TARGETS_PER_BUS.

ReservedUchars[2]

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

SlotNumber

Указывает номер слота адаптера HBA со значениями, совпадающими со значениями VendorId и DeviceId , которые были указаны в структуре HW_INITIALIZATION_DATA (SCSI), когда драйвер мини-порта называется ScsiPortInitialize.

BusInterruptLevel2

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

BusInterruptVector2

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

InterruptMode2

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

DmaChannel2

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

DmaPort2

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

DmaWidth2

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

DmaSpeed2

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

DeviceExtensionSize

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

SpecificLuExtensionSize

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

SrbExtensionSize

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

Dma64BitAddresses

Указывает, что HBA может получить доступ к адресам размером более 4 ГБ или 0x0FFFFFFFF, если Dma64BitAddresses содержит значение SCSI_DMA64_MINIPORT_SUPPORTED. До Windows 2000 ScsiPort устанавливал это значение на основе содержимого HW_INITIALIZATION_DATA (SCSI). Это больше не требуется. В Windows 2000 значение Dma64BitAddresses определяется только обратным вызовом драйвера мини-порта HwScsiFindAdapter . Если операционная система поддерживает 64-разрядное адресное пространство, драйвер порта передает значение SCSI_DMA64_SYSTEM_SUPPORTED драйверу miniport в этом элементе. Если адаптер HBA, описанный PORT_CONFIGURATION_INFORMATION, также поддерживает адресные пространства, превышающие 32 бита, то драйвер порта или мини-порта требуется для поддержки полной 64-разрядной адресации, а обратный вызов драйвера минипорта HwScsiFindAdapter указывает на это, назначая значение SCSI_DMA64_MINIPORT_SUPPORTED Dma64BitAddresses, записывая все предыдущие значения, присвоенные драйвером порта. Необходимо назначить правильное значение члену Dma64BitAddresses , прежде чем драйвер мини-порта вызовет ScsiPortGetUncachedExtension.

ResetTargetSupported

Является устаревшей. Драйвер ScsiPort больше не отправляет SRB_FUNCTION_RESET_DEVICE запросы к своим драйверам минипорта. Не используйте этот элемент.

MaximumNumberOfLogicalUnits

Указывает максимальное количество логических единиц на целевой объект, который может контролировать адаптер шины. По умолчанию значение этого элемента равно SCSI_MAXIMUM_LOGICAL_UNITS. Драйвер мини-порта может сбросить этот элемент на меньшее значение, если HBA имеет более ограниченные возможности или большее значение, указывающее, что HBA имеет возможности SCSI-3.

WmiDataProvider

Указывает, когда значение TRUE , драйвер мини-порта отвечает на запросы инструментария управления Windows (WMI). При значении FALSE драйвер мини-порта не отвечает на запросы инструментария управления Windows (WMI). По умолчанию этот элемент имеет значение FALSE.

Комментарии

Конкретные инициализированные элементы зависят от драйвера мини-порта HBA и от сведений о конфигурации, доступных драйверу порта для конкретной ОС. Драйвер портов для конкретной ОС задает значения по умолчанию во всех членах, для которых он не может предоставить сведения о конфигурации в подпрограмму HwScsiFindAdapter драйвера мини-порта.

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

Подпрограмма HwScsiFindAdapter должна обновить все члены, относящиеся к адаптеру HBA, который поддерживает драйвер.

Windows NT драйверы класса хранения, которые загружаются позже, чем драйверы минипорта, зависят от сведений, предоставляемых подпрограммой HwScsiFindAdapter каждого драйвера мини-порта для настройки последующих запросов ввода-вывода. Например, значения MaximumTransferLength и NumberOfPhysicalBreaks , предоставляемые каждым драйвером мини-порта, определяют, должен ли драйвер класса разделять большие запросы на частичные передачи в соответствии с ограничениями HBA.

Член Dma64BitAddresses PORT_CONFIGURATION_INFORMATION больше не следует рассматривать как значение BOOLEAN. Значение SCSI_DMA64_SYSTEM_SUPPORTED указывает, что драйвер порта или минипорта требуется для поддержки 64-разрядной адресации, но подпрограмма ScsiPortGetUncachedExtension по-прежнему интерпретирует любое ненулевое значение Dma64BitAddresses как указывающее, что требуется 64-разрядная поддержка. Это означает, что ScsiPortGetUncachedExtension по-прежнему правильно работает при вызове устаревшим драйвером, который присваивает значения BOOLEAN Dma64BitAddresses.

Помимо Dma64BitAddresses, у PORT_CONFIGURATION_INFORMATION и HW_INITIALIZATION_DATA есть пара элементов SpecificLuExtensionSize и SrbExtensionSize , значения которых теперь должны обрабатываться по-разному. Драйвер мини-порта должен вычислить начальные значения SpecificLuExtensionSize и SrbExtensionSize в HW_INITIALIZATION_DATA, исходя из предположения, что HBA способен получать 32-разрядные адреса независимо от того, что контроллер может фактически поддерживать. Значения по умолчанию для SpecificLuExtensionSize и SrbExtensionSize в PORT_CONFIGURATION_INFORMATION также будут основаны на предположении о 32-разрядной адресации, так как значения в PORT_CONFIGURATION_INFORMATION являются производными от значений в HW_INITIALIZATION_DATA.

Это означает, что если драйверу мини-порта требуется дополнительное пространство в расширении LUN или SRB для обработки 64-разрядных физических адресов, он должен изменить значения SpecificLuExtensionSize и SrbExtensionSize в PORT_CONFIGURATION_INFORMATION, чтобы учесть это перед передачей PORT_CONFIGURATION_INFORMATION в ScsiPortGetUncachedExtension.

Требования

Требование Значение
Заголовок srb.h (включая Srb.h, Storport.h, Strmini.h)

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

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRange