estructura PORT_CONFIGURATION_INFORMATION (srb.h)

PORT_CONFIGURATION_INFORMATION (SCSI) contiene información de configuración para un HBA. El controlador de puerto específico del sistema operativo asigna e inicializa esta estructura, proporciona tanto información de configuración específica de HBA como sea posible y pasa la estructura a la rutina HwScsiFindAdapter del controlador de miniporte. El controlador de puerto obtiene parte de la información de esta estructura a partir de la estructura HW_INITIALIZATION_DATA del controlador de minipuerto. La rutina HwScsiFindAdapter del controlador de miniporte es responsable de determinar si el controlador de miniporte puede admitir el HBA y, si es así, para rellenar la información restante pertinente en la estructura PORT_CONFIGURATION_INFORMATION.

Nota

Los modelos del controlador de puerto SCSI y del controlador de miniporte SCSI pueden modificarse o no estar disponibles en el futuro. En su lugar, use el controlador Storport y los modelos de controlador de minipuerto de Storport .

Sintaxis

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;

Miembros

Length

Especifica el tamaño de esta estructura en bytes. En efecto, este miembro, que siempre se inicializa mediante el controlador de puerto específico del sistema operativo, indica la versión de esta estructura utilizada por el controlador de puerto.

SystemIoBusNumber

Especifica el número asignado por el sistema del bus de E/S al que está conectado el HBA. El controlador de puerto específico del sistema operativo siempre inicializa este miembro. Su valor está asignado por el sistema porque la plataforma puede tener varios buses de E/S del adapterInterfaceType especificado.

AdapterInterfaceType

Identifica la interfaz del bus de E/S. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor especificado por el controlador de miniport en la estructura HW_INITIALIZATION_DATA (SCSI).

BusInterruptLevel

Especifica el nivel de solicitud de interrupción relativa al bus. El controlador de puerto específico del sistema operativo no supone ningún supuesto sobre el uso de interrupciones del HBA, por lo que el valor predeterminado es cero. Según el AdapterInterfaceType y HBA especificados, el valor establecido para este miembro puede corresponder al IRQL del bus, como para los buses de tipo Isa y MicroChannel . Los controladores de Eisa HBAs deben establecer este valor en el IRQL relativo al bus para el HBA si el adaptador está configurado para interrupciones sensibles al nivel.

BusInterruptVector

Especifica el vector relativo al bus devuelto por el HBA. El controlador de puerto específico del sistema operativo no supone ningún supuesto sobre el uso de interrupciones del HBA, por lo que el valor predeterminado es cero. Este miembro es irrelevante para los controladores que configuran el miembro BusInterruptLevel para sus HBA. Es pertinente para las HBA en tipos de buses de E/S que usan vectores de interrupción, como PCIBus.

InterruptMode

Especifica si el HBA usa interrupciones LevelSensitive o Latched (a veces denominadas "desencadenadas por el borde"). El controlador de puerto específico del sistema operativo inicializa este miembro en un valor adecuado para el bus y el dispositivo, por ejemplo, LevelSensitive para PCIBus. Los controladores de Eisa HBAs deben restablecer este valor si el adaptador está configurado para interrupciones sensibles a nivel, ya que los controladores de HBA en buses de E/S que usan interrupciones sensibles a nivel, como los buses de tipo MicroChannel .

MaximumTransferLength

Especifica el número máximo de bytes que el HBA puede transferir en una sola operación de transferencia. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE, lo que indica un tamaño de transferencia máximo ilimitado. Si su HBA tiene soporte de transferencia más limitado, un controlador de minipuerto debe restablecer este miembro según la capacidad de transferencia del HBA. Si la rutina HwScsiInterrupt de un controlador de miniporte no puede deshabilitar las interrupciones en el HBA, este miembro se puede ajustar durante el desarrollo del controlador para asegurarse de que el tiempo empleado en ese ISR del controlador de miniporte no hace que el mouse "salte" o el rendimiento serie/paralelo se coloque en un nivel visible por el usuario.

NumberOfPhysicalBreaks

Especifica el número máximo de saltos entre intervalos de direcciones que un búfer de datos puede tener si el HBA admite dispersión o recopilación. En otras palabras, el número de listas de dispersión y recopilación menos una. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE, lo que indica que el HBA puede admitir un número ilimitado de disconiguidades físicas. Si el controlador de puerto establece un valor para este miembro, el controlador de minipuerto puede ajustar el valor inferior pero no superior. Si este miembro es SP_UNINITIALIZED_VALUE, el controlador de minipuerto debe restablecer este miembro según la capacidad de dispersión o recopilación del HBA, con cero que representa ningún soporte de dispersión o recopilación.

DmaChannel

Especifica el canal DMA utilizado por un HBA subordinado. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE. Si el HBA usa un controlador DMA del sistema y el AdapterInterfaceType determinado es cualquier valor excepto MicroChannel, el controlador de miniporte debe restablecer este miembro.

DmaPort

Especifica el puerto DMA utilizado por un HBA subordinado. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE. Si el HBA usa un controlador DMA del sistema y el adapterInterfaceType especificado es MicroChannel, el controlador de miniporte debe establecer este miembro.

DmaWidth

Especifica el ancho de las transferencias DMA si el HBA usa DMA. De forma predeterminada, el valor de este miembro es cero. Si su HBA realiza DMA, el controlador de minipuerto debe restablecer este miembro a uno de los siguientes: Width8Bits, Width16Bits o Width32Bits.

DmaSpeed

Especifica la velocidad de transferencia de datos DMA para las HBA de Eisa . De forma predeterminada, el valor de este miembro especifica el tiempo de compatibilidad. Los valores aceptables para este miembro son cualquiera de los siguientes: Compatible, TypeA, TypeB o TypeC.

AlignmentMask

Contiene una máscara que indica las restricciones de alineación de los búferes requeridos por el HBA para las operaciones de transferencia. Los valores de máscara válidos también están restringidos por características de los administradores de memoria en diferentes versiones de Windows. Los valores de máscara que se permiten en Windows 95 o Windows 98 son 0 (alineados por bytes), 1 (línea de palabra) o 3 (alineado con DWORD). En Windows NT y Windows 2000, los valores de máscara válidos son 0 (alineados por bytes), 1 (línea de palabra), 3 (alineados con DWORD) y 7 (doble DWORD alineado). El controlador de minipuerto debe establecer esta máscara si el HBA admite dispersión o recopilación.

NumberOfAccessRanges

Especifica el número de elementos AccessRanges de la matriz, que se describen a continuación. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA cuando el controlador de miniporte llamado ScsiPortInitialize.

AccessRanges

Reserved

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

NumberOfBuses

Especifica el número de buses SCSI controlados por el HBA. De forma predeterminada, el valor de este miembro es cero.

InitiatorBusId[8]

Indica el identificador del bus iniciador. Si el IniciadorBusId de entrada[0] tiene el valor cero, el controlador de minipuerto puede asignar un valor predeterminado si su HBA no requiere el uso de valores concretos determinados consultando el HBA. De lo contrario, el controlador de minipuerto debe usar cualquier valor distinto de cero asignado por el controlador de puerto, si es posible. Cada controlador de miniporte debe actualizar las especificaciones de InitiatorBusId para que coincidan con lo que usa su HBA, si es necesario consultar el HBA para determinar los valores adecuados.

Un controlador de minipuerto debe establecer una entrada para cada bus SCSI compatible con el HBA, como se indica en el valor de NumberOfBuses.

ScatterGather

Indica cuándo TRUE que el HBA admite dispersión o recopilación. Cuando FALSE , el HBA no admite dispersión o recopilación. De forma predeterminada, el valor de este miembro es FALSE.

Master

Indica si es TRUE que el HBA es un patrón de bus. Cuando es FALSE, el HBA no es un maestro de autobús. De forma predeterminada, el valor de este miembro es FALSE.

CachesData

Indica si es TRUE que el HBA almacena en caché los datos o mantiene el estado almacenado en caché en los periféricos. Cuando FALSE , el HBA no almacena en caché los datos ni mantiene el estado almacenado en caché en los periféricos. De forma predeterminada, el valor de este miembro es FALSE. Si se restablece a TRUE, el controlador de puerto específico del sistema operativo notifica al controlador de miniporte cuando se producen determinados eventos del sistema, como los vaciados de la caché del sistema de archivos y el apagado del sistema. Por ejemplo, si un controlador del bus refleja dos discos, el controlador de minipuerto normalmente establecería este miembro en TRUE.

AdapterScansDown

Indica si es TRUE que el BIOS del HBA examina los destinos de bus SCSI de siete a cero. Cuando es FALSE, el BIOS del HBA busca destinos de bus SCSI, empezando por un identificador cero y explorando hacia arriba hasta (pero no incluido) MaximumTargetIds. De forma predeterminada, el valor de AdapterScansDown es FALSE.

AtdiskPrimaryClaimed

Indica si es TRUE que el intervalo de direcciones de disco "AT" principal (compatible con WD1003), 0x1F0 a 0x1FF, otro controlador ha reclamado en el registro para su dispositivo. El controlador de puerto específico del sistema operativo siempre inicializa este miembro. Si el valor de entrada de este miembro es TRUE, un controlador de minipuerto debe suponer que un controlador ya cargado ha reclamado el intervalo de dispositivos. Si el valor de entrada es FALSE, un controlador de minipuerto puede reclamar el intervalo de direcciones de un HBA que emula un controlador de disco "AT" y restablece este miembro a TRUE, lo que impide el acceso a este intervalo por el controlador de disco "AT" o los controladores de miniporte cargados posteriormente.

AtdiskSecondaryClaimed

Indica si es TRUE que otro controlador ha reclamado el intervalo de direcciones del disco AT secundario, 0x170 a 0x17F ha reclamado en el Registro otro controlador para su dispositivo. Cuando FALSE , otro controlador no ha reclamado el intervalo de direcciones del disco AT secundario en el Registro. El controlador de puerto específico del sistema operativo siempre inicializa este miembro. Los controladores miniport deben tratar este miembro como para AtdiskPrimaryClaimed.

Dma32BitAddresses

Indica si es TRUE que el HBA tiene 32 líneas de direcciones y puede acceder a la memoria con direcciones físicas mayores que 0x00FFFFFF. Cuando FALSE , el HBA tiene una serie de líneas de direcciones DMA distintas de 32. De forma predeterminada, el valor de este miembro es FALSE. Si el controlador de minipuerto establece Dma64BitAddresses, este miembro debe ser FALSE.

DemandMode

Indica si es TRUE que el controlador DMA del sistema debe programarse para el modo de demanda en lugar de las operaciones de ciclo único. Si el HBA no es un dispositivo subordinado, este miembro debe ser FALSE.

MapBuffers

Indica cuando TRUE , los búferes de datos se deben asignar a los intervalos de direcciones virtuales del sistema. Cuando false , los búferes de datos no tienen que asignarse a direcciones virtuales del sistema. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle. Si es FALSE, el controlador de minipuerto no debe acceder directamente a Srb.DataBuffer .

NeedPhysicalAddresses

Indica si es TRUE que el controlador de minipuerto debe traducir direcciones virtuales a direcciones físicas, según lo requiera el HBA. Si es FALSE, el controlador de minipuerto no tiene que traducir direcciones virtuales a direcciones físicas. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle.

TaggedQueuing

Indica si es TRUE que el HBA admite la puesta en cola de varias solicitudes con etiquetas SCSI. Cuando es FALSE, el HBA no admite la puesta en cola con etiquetas SCSI. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle.

AutoRequestSense

Indica cuándo TRUE que el HBA admite el sentido de solicitud automática. Cuando FALSE , el HBA no admite el sentido de solicitud automática. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle. Este miembro debe establecerse en TRUE antes de que el controlador de un HBA maestro de bus llame a ScsiPortGetUncachedExtension.

MultipleRequestPerLu

Indica si es TRUE que el HBA admite varias solicitudes por unidad lógica. Cuando FALSE , el HBA no admite varias solicitudes por unidad lógica. Mecanismo por el que el adaptador almacena en caché las solicitudes está definida por el adaptador. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle.

ReceiveEvent

Indica cuándo TRUE que el HBA admite operaciones de eventos de recepción SCSI. Cuando FALSE , el HBA no admite operaciones de eventos de recepción SCSI. El controlador de puerto específico del sistema operativo siempre establece este miembro en el valor pasado en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniporte llamado ScsiPortInitialize. Un controlador de minipuerto puede restablecer este valor para cualquier HBA concreto que controle.

RealModeInitialized

Indica si es TRUE que un controlador en modo real (solo x86) ya ha inicializado el HBA. Cuando FALSE , el HBA no se ha inicializado previamente mediante un controlador en modo real. El controlador de puerto dependiente del sistema operativo siempre inicializa este miembro. Si se establece en TRUE, el controlador de minipuerto no debe inicializar su HBA si la secuencia de inicialización del controlador es idéntica a la inicialización del HBA en modo real; no reinicializar el HBA en estas circunstancias hace que el controlador de miniporte se cargue mucho más rápido. El valor de este miembro es irrelevante para cualquier controlador de miniporte que siempre inicialice su HBA mientras se ejecuta en modo protegido en plataformas basadas en x86 y en todos los controladores de minipuerto para los que es inmaterial si se ejecutan en una plataforma basada en CISC o RISC.

BufferAccessScsiPortControlled

Indica si es TRUE que el controlador de minipuerto siempre llama a ScsiPortXxx para acceder a búferes de datos o información de sentido de solicitud en srBs, lo que permite que el controlador de puerto específico del sistema operativo optimice el procesamiento de solicitudes de E/S. Cuando FALSE , el controlador de minipuerto no tiene que llamar a rutinas de ScsiPortXxx para acceder a búferes de datos o información de solicitud-sentido. Establecer este miembro en FALSE puede degradar el rendimiento de E/S del HBA. Las rutinas de llamada que no sean ScsiPortXxx hacen que un controlador de miniporte no seaportable en todos los sistemas operativos de Microsoft.

MaximumNumberOfTargets

Especifica el número de periféricos de destino que puede controlar el HBA. De forma predeterminada, el valor de este miembro es SCSI_MAXIMUM_TARGETS, según el estándar SCSI. Un controlador de minipuerto puede restablecer este miembro a un valor menor si el HBA tiene capacidades más limitadas o un valor mayor, lo que indica que el HBA tiene funcionalidades de canal de fibra o SCSI ancho. Este valor se limita a SCSI_MAXIMUM_TARGETS_PER_BUS.

ReservedUchars[2]

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

SlotNumber

Especifica el número de ranura de un HBA con valores coincidentes con vendorId y DeviceId que se especificaron en la estructura de HW_INITIALIZATION_DATA (SCSI) cuando el controlador de miniport llamado ScsiPortInitialize.

BusInterruptLevel2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

BusInterruptVector2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

InterruptMode2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

DmaChannel2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

DmaPort2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

DmaWidth2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

DmaSpeed2

Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.

DeviceExtensionSize

Especifica el tamaño en bytes requerido por un controlador de minipuerto para su extensión de dispositivo por HBA para controlar las transferencias de datos mayores que 64K, lo que podría requerir listas de dispersión o recopilación mayores que el tamaño definido en el Registro para este controlador.

SpecificLuExtensionSize

Especifica el tamaño en bytes requerido por el controlador de miniport para su almacenamiento por unidad lógica, si existe, para controlar las transferencias de datos mayores que 64K. Deje este miembro establecido en cero si el controlador de minipuerto no mantiene la información por LU para la que requiere almacenamiento. Este valor se basa en la suposición de que el HBA puede recibir direcciones de 32 bits, independientemente de lo que el controlador pueda admitir realmente. Si se necesita espacio adicional en las extensiones LUN o SRB para controlar direcciones de 64 bits, se deben realizar ajustes adecuados en este valor antes de usarlo con rutinas como ScsiPortGetUncachedExtension.

SrbExtensionSize

Especifica el tamaño en bytes requerido por el controlador de miniport para su almacenamiento por solicitud, si existe, para controlar las transferencias de datos mayores que 64 000. Establezca este miembro antes de llamar a ScsiPortGetUncachedExtension para cambiar el tamaño del almacenamiento por solicitud basado en NumberOfPhysicalBreaks. Deje este miembro establecido en cero si el controlador de minipuerto no mantiene la información por SRB para la que requiere almacenamiento. Este valor se basa en la suposición de que el HBA puede recibir direcciones de 32 bits, independientemente de lo que el controlador pueda admitir realmente. Si se necesita espacio adicional en las extensiones LUN o SRB para controlar direcciones de 64 bits, se deben realizar ajustes adecuados en este valor antes de usarlo con rutinas como ScsiPortGetUncachedExtension.

Dma64BitAddresses

Indica que el HBA puede acceder a direcciones mayores de 4 GB o 0x0FFFFFFFF si Dma64BitAddresses contiene un valor de SCSI_DMA64_MINIPORT_SUPPORTED. Antes de Windows 2000, ScsiPort estableció este valor en función del contenido de HW_INITIALIZATION_DATA (SCSI). Este ya no es el caso. En Windows 2000, el valor de Dma64BitAddresses viene determinado por la devolución de llamada del controlador de miniportar HwScsiFindAdapter por sí sola. Si el sistema operativo admite un espacio de direcciones de 64 bits, el controlador de puerto pasa un valor de SCSI_DMA64_SYSTEM_SUPPORTED al controlador de minipuerto de este miembro. Si el HBA descrito por PORT_CONFIGURATION_INFORMATION también admite espacios de direcciones superiores a 32 bits, el controlador port/miniport es necesario para admitir direccionamiento de 64 bits completo y la devolución de llamada del controlador de miniporte HwScsiFindAdapter indica esto asignando un valor de SCSI_DMA64_MINIPORT_SUPPORTED a Dma64BitAddresses, escribiendo sobre cualquier valor anterior asignado por el controlador de puerto. El valor correcto debe asignarse al miembro Dma64BitAddresses antes de que el controlador de miniporte llame a ScsiPortGetUncachedExtension.

ResetTargetSupported

Obsoleto. El controlador ScsiPort ya no envía SRB_FUNCTION_RESET_DEVICE solicitudes a sus controladores de minipuerto. No use este miembro.

MaximumNumberOfLogicalUnits

Especifica el número máximo de unidades lógicas por destino que el HBA puede controlar. De forma predeterminada, el valor de este miembro es SCSI_MAXIMUM_LOGICAL_UNITS. Un controlador de minipuerto puede restablecer este miembro a un valor menor si el HBA tiene capacidades más limitadas o un valor mayor, lo que indica que el HBA tiene funcionalidades SCSI-3.

WmiDataProvider

Indica si es TRUE que el controlador de minipuerto responde a las solicitudes de Instrumental de administración de Windows (WMI). Cuando FALSE , el controlador de minipuerto no responde a las solicitudes de Instrumental de administración de Windows (WMI). De forma predeterminada, el valor de este miembro es FALSE.

Comentarios

Los miembros específicos inicializados dependen del controlador de miniporte de HBA y de la información de configuración disponible para el controlador de puerto específico del sistema operativo. El controlador de puerto específico del sistema operativo establece valores predeterminados en todos los miembros para los que no puede proporcionar información de configuración a la rutina HwScsiFindAdapter del controlador de miniporte.

Todos los controladores de minipuerto de HBA deben tener al menos un conjunto de valores predeterminados para usar para los miembros pertinentes si el controlador de puerto específico del sistema operativo no pasa todos los valores inicializados.

La rutina HwScsiFindAdapter debe actualizar todos los miembros relevantes para un HBA que admita el controlador.

Los controladores de clase de almacenamiento de Windows NT, que se cargan más tarde que los controladores de minipuerto, dependen de la información proporcionada por la rutina HwScsiFindAdapter del controlador de miniporte para configurar sus solicitudes de E/S posteriores. Por ejemplo, los valores MaximumTransferLength y NumberOfPhysicalBreaks proporcionados por cada controlador de minipuerto controlan si un controlador de clase debe dividir las solicitudes de transferencia grandes en un conjunto de transferencias parciales para adaptarse a los límites del HBA.

El miembro Dma64BitAddresses de PORT_CONFIGURATION_INFORMATION ya no debe considerarse como un valor BOOLEAN. Un valor de SCSI_DMA64_SYSTEM_SUPPORTED indica que el controlador port/miniport es necesario para admitir direccionamiento de 64 bits, pero la rutina ScsiPortGetUncachedExtension sigue interpretando cualquier valor distinto de cero de Dma64BitAddresses como indica que se requiere compatibilidad de 64 bits. Esto significa que ScsiPortGetUncachedExtension sigue funcionando correctamente cuando un controlador heredado llama a un controlador heredado que asigna valores BOOLEAN a Dma64BitAddresses.

Además de Dma64BitAddresses, tanto PORT_CONFIGURATION_INFORMATION como HW_INITIALIZATION_DATA tienen un par de miembros denominados SpecificLuExtensionSize y SrbExtensionSize cuyos valores deben controlarse de forma diferente. El controlador de minipuerto debe calcular los valores iniciales de SpecificLuExtensionSize y SrbExtensionSize en HW_INITIALIZATION_DATA en función de la suposición de que el HBA es capaz de recibir direcciones de 32 bits, independientemente de lo que el controlador pueda admitir realmente. Los valores predeterminados de SpecificLuExtensionSize y SrbExtensionSize en PORT_CONFIGURATION_INFORMATION también se basarán en una suposición de direccionamiento de 32 bits, ya que los valores de PORT_CONFIGURATION_INFORMATION se derivan de los valores de HW_INITIALIZATION_DATA.

Esto significa que si el controlador de miniporte necesita espacio adicional en la extensión LUN o en la extensión SRB para controlar direcciones físicas de 64 bits, debe modificar los valores de SpecificLuExtensionSize y SrbExtensionSize en PORT_CONFIGURATION_INFORMATION para tener en cuenta esto antes de pasar PORT_CONFIGURATION_INFORMATION a ScsiPortGetUncachedExtension.

Requisitos

Requisito Valor
Header srb.h (incluya Srb.h, Storport.h, Strmini.h)

Consulte también

ACCESS_RANGE

HW_INITIALIZATION_DATA (SCSI)

HwScsiFindAdapter

ScsiPortGetDeviceBase

ScsiPortGetUncachedExtension

ScsiPortInitialize

ScsiPortValidateRange