estructura de PORT_CONFIGURATION_INFORMATION (storport.h)

PORT_CONFIGURATION_INFORMATION contiene información de configuración para un adaptador de bus host (HBA).

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                                  MiniportDumpData;
  PVOID                                  Reserved;
  UCHAR                                  NumberOfBuses;
  CCHAR                                  InitiatorBusId[8];
  BOOLEAN                                ScatterGather;
  BOOLEAN                                Master;
  BOOLEAN                                CachesData;
  BOOLEAN                                AdapterScansDown;
  BOOLEAN                                AtdiskPrimaryClaimed;
  BOOLEAN                                AtdiskSecondaryClaimed;
  BOOLEAN                                Dma32BitAddresses;
  BOOLEAN                                DemandMode;
  UCHAR                                  MapBuffers;
  BOOLEAN                                NeedPhysicalAddresses;
  BOOLEAN                                TaggedQueuing;
  BOOLEAN                                AutoRequestSense;
  BOOLEAN                                MultipleRequestPerLu;
  BOOLEAN                                ReceiveEvent;
  BOOLEAN                                RealModeInitialized;
  BOOLEAN                                BufferAccessScsiPortControlled;
  UCHAR                                  MaximumNumberOfTargets;
  UCHAR                                  SrbType;
  UCHAR                                  AddressType;
  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;
  STOR_SYNCHRONIZATION_MODEL             SynchronizationModel;
  PHW_MESSAGE_SIGNALED_INTERRUPT_ROUTINE HwMSInterruptRoutine;
  INTERRUPT_SYNCHRONIZATION_MODE         InterruptSynchronizationMode;
  MEMORY_REGION                          DumpRegion;
  ULONG                                  RequestedDumpBufferSize;
  BOOLEAN                                VirtualDevice;
  UCHAR                                  DumpMode;
  UCHAR                                  DmaAddressWidth;
  ULONG                                  ExtendedFlags1;
  ULONG                                  MaxNumberOfIO;
  ULONG                                  MaxIOsPerLun;
  ULONG                                  InitialLunQueueDepth;
  ULONG                                  BusResetHoldTime;
  ULONG                                  FeatureSupport;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;

Miembros

Length

Tamaño, en bytes, de la estructura PORT_CONFIGURATION_INFORMATION . Inicializado por el controlador storport, este miembro también actúa como la versión de la estructura.

SystemIoBusNumber

Número asignado por el sistema del bus de E/S al que está conectado el HBA. Los controladores de minipuerto no deben modificar este miembro. Su valor se asigna por el sistema porque la plataforma puede tener varios buses de E/S del AdapterInterfaceType especificado.

AdapterInterfaceType

Interfaz de bus de E/S. Storport inicializa este miembro en el valor especificado por el controlador de miniport en la estructura HW_INITIALIZATION_DATA . Los controladores de minipuerto no deben modificar este miembro.

BusInterruptLevel

Nivel de solicitud de interrupción relativa al bus. Storport no realiza suposiciones sobre el uso de interrupciones del HBA, por lo que el valor predeterminado es cero. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

BusInterruptVector

Vector relativo al bus devuelto por el HBA. Storport no realiza suposiciones 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. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

InterruptMode

Especifica si el HBA usa interrupciones LevelSensitive o Latched (a veces denominadas "desencadenadas por bordes"). Storport inicializa este miembro en un valor adecuado para el bus y el dispositivo, por ejemplo , LevelSensitive para PCIBus. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

MaximumTransferLength

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 HwStorInterrupt de un controlador de minipuerto no puede deshabilitar las interrupciones en el HBA, este miembro se puede ajustar durante el desarrollo del controlador para asegurarse de que el ISR del controlador de minipuerto no degrada el rendimiento general del sistema.

NumberOfPhysicalBreaks

Número máximo de páginas físicas que el adaptador de almacenamiento puede administrar en una sola transferencia (es decir, la extensión de su compatibilidad de dispersión/recopilación). De forma predeterminada, el valor de este miembro es 0x11. El controlador de minipuerto debe restablecer este miembro según la funcionalidad del adaptador de almacenamiento.

DmaChannel

Canal DMA utilizado por un HBA subordinado. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

DmaPort

Puerto DMA utilizado por un HBA subordinado. De forma predeterminada, el valor de este miembro es SP_UNINITIALIZED_VALUE. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

DmaWidth

Ancho de las transferencias DMA si el HBA usa DMA. De forma predeterminada, el valor de este miembro es cero. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

DmaSpeed

Velocidad de transferencia de datos DMA para Eisa HBAs. Storport inicializa este miembro y los controladores de minipuerto no deben modificarlo.

AlignmentMask

Máscara que indica las restricciones de alineación para los búferes requeridos por el HBA para las operaciones de transferencia. Algunos valores de máscara válidos de ejemplo son 0 (alineados por bytes), 1 (línea de palabra), 3 (alineado con DWORD) y 7 (doble DWORD alineado). El controlador de minipuerto debe establecer esta máscara si el HBA admite dispersión y recopilación. Los siguientes valores de máscara de alineación permitidos se definen en wdm.h:

Valor Significado
FILE_BYTE_ALIGNMENT (0x00000000) Los datos están alineados por bytes (sin requisitos de alineación para el dispositivo)
FILE_WORD_ALIGNMENT (0x00000001) Los datos deben alinearse en un límite de 2 bytes.
FILE_LONG_ALIGNMENT (0x00000003) Los datos deben alinearse en un límite de 4 bytes.
FILE_QUAD_ALIGNMENT (0x00000007) Los datos se deben alinear en un límite de 8 bytes.
FILE_OCTA_ALIGNMENT (0x0000000f) Los datos deben alinearse en un límite de 16 bytes.
FILE_32_BYTE_ALIGNMENT (0x0000001f) Los datos deben alinearse en un límite de 32 bytes.
FILE_64_BYTE_ALIGNMENT (0x0000003f) Los datos deben alinearse en un límite de 64 bytes.
FILE_128_BYTE_ALIGNMENT (0x0000007f) Los datos deben alinearse en un límite de 128 bytes.
FILE_256_BYTE_ALIGNMENT (0x000000ff) Los datos deben alinearse en un límite de 256 bytes.
FILE_512_BYTE_ALIGNMENT (0x000001ff) Los datos deben alinearse en un límite de 512 bytes.

NumberOfAccessRanges

Especifica el número de elementos AccessRanges de la matriz.

AccessRanges

Puntero a una matriz de elementos de tipo ACCESS_RANGE. Storport asigna memoria para los intervalos de acceso e inicializa este miembro. Los controladores de minipuerto no deben modificar este miembro.

MiniportDumpData

Puntero a un contexto de volcado de memoria usado durante un bloqueo o una hibernación.

Reserved

Reservado para uso del sistema (pre-Windows 8).

NumberOfBuses

Número de autobuses controlados por el adaptador. De forma predeterminada, el valor de este miembro es cero. Este miembro tiene un valor máximo de SCSI_MAXIMUM_BUSES_PER_ADAPTER. Este miembro está disponible a partir de Windows 8.

InitiatorBusId[8]

Identificador del bus del iniciador. Si la entrada InitiatorBusId[0] tiene el valor SP_UNINITIALIZED_VALUE, el controlador de minipuerto puede asignar un valor predeterminado si su HBA no requiere el uso de valores concretos determinados mediante la consulta del HBA. De lo contrario, el controlador de minipuerto debe usar cualquier valor distinto de cero asignado por el controlador de puerto si es posible. Normalmente, este valor está limitado por el valor establecido para MaximumNumberOfTargets.

ScatterGather

Cuando es TRUE, el HBA admite dispersión y recopilación. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir la dispersión y la recopilación. Los controladores de minipuerto que funcionan con Storport no deben modificar este valor. (NOTA: en versiones de Windows anteriores a Windows Server 2008 R2 y Windows 7, este miembro se establece en FALSE. En este caso, los controladores de minipuerto deben establecer este miembro en TRUE. Si no se establece este miembro en TRUE , el dispositivo HBA no se podrá iniciar).

Master

Cuando es TRUE, el HBA es un bus maestro. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir DMA de maestro de bus. Los controladores de minipuerto que funcionan con Storport no deben modificar este valor. (NOTA: en versiones de Windows anteriores a Windows Server 2008 R2 y Windows 7, este miembro se establece en FALSE. En este caso, los controladores de minipuerto deben establecer este miembro en TRUE. Si no se establece este miembro en TRUE , el dispositivo HBA no se podrá iniciar).

CachesData

Cuando es TRUE, el HBA almacena en caché los datos o mantiene el estado almacenado en caché en los periféricos. Cuando es 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, Storport notifica al controlador de miniport cuando se producen determinados eventos del sistema, como el vaciado de la memoria caché del sistema de archivos.

AdapterScansDown

Storport omite este miembro.

AtdiskPrimaryClaimed

Storport no usa este miembro y sus controladores de minipuerto no deben establecerlo.

AtdiskSecondaryClaimed

Storport no usa este miembro y sus controladores de minipuerto no deben establecerlo.

Dma32BitAddresses

Si es TRUE, el HBA tiene 32 líneas de direcciones y puede acceder a la memoria con direcciones físicas mayores que 0x00FFFFFF. Storport inicializa este miembro en TRUE, ya que sus controladores de minipuerto deben admitir DMA de ancho de bus. Los controladores de minipuerto no deben modificar este valor, ya que este es el direccionamiento DMA predeterminado si no se establece un valor para Dma64BitAddresses . NOTA: Si solo el hardware del dispositivo admite direcciones de 32 bits, Dma64BitAddresses debe establecerse en 0.

DemandMode

Indica si el controlador DMA del sistema debe programarse para el modo de demanda en lugar de para las operaciones de un solo ciclo. Storport inicializa este miembro en FALSE, ya que no admite DMA en modo subordinado. Los controladores de minipuerto no deben modificar este valor.

MapBuffers

Indica si Storport asigna direcciones de búfer de datos SRB a direcciones virtuales del sistema. El controlador de minipuerto establece este miembro en uno de los valores siguientes para controlar la asignación de direcciones de búfer de datos SRB.

Valor Significado
STOR_MAP_NO_BUFFERS Asigna el búfer solo para SRB_FUNCTION_IO_CONTROL y SRB_FUNCTION_WMI.
STOR_MAP_ALL_BUFFERS Obsoleto. Este valor tiene el mismo efecto que STOR_MAP_NON_READ_WRITE_BUFFERS.
STOR_MAP_NON_READ_WRITE_BUFFERS Asigna el búfer para todas las E/S, excepto para las solicitudes de lectura y escritura.
STOR_MAP_ALL_BUFFERS_INCLUDING_READ_WRITE Asigna el búfer para todas las E/S, incluidas las solicitudes de lectura y escritura. Los miniportes auxiliares de arranque deben controlar una solicitud de lectura o escritura de PAGE_SIZE de longitud. Estas solicitudes de lectura o escritura siempre deben completarse correctamente. Storport puede no asignar el búfer en condiciones de memoria del sistema bajas. En este caso, el miembro DataBuffer de la SRB será NULL.

NeedPhysicalAddresses

Cuando es TRUE, el controlador de minipuerto debe traducir direcciones virtuales a direcciones físicas, según lo requiera el HBA. Storport inicializa este miembro en TRUE, ya que sus controladores de minipuerto deben admitir listas de dispersión y recopilación. Miniport no debe modificar este valor.

TaggedQueuing

Cuando es TRUE, HBA admite la puesta en cola de varias solicitudes con etiquetas SCSI. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir la cola etiquetada. Los controladores de minipuerto no deben modificar este valor.

AutoRequestSense

Cuando es TRUE, el HBA admite el sentido de solicitud automática. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir el sentido de solicitud automática. Los controladores de minipuerto no deben modificar este valor.

MultipleRequestPerLu

Cuando es TRUE, el HBA admite varias solicitudes por unidad lógica. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir varias solicitudes emitidas a una unidad lógica en el momento. Los controladores de minipuerto no deben modificar este valor.

ReceiveEvent

Storport no usa este miembro y sus controladores de minipuerto no deben establecerlo.

RealModeInitialized

Storport no usa este miembro y sus controladores de minipuerto no deben establecerlo.

BufferAccessScsiPortControlled

Storport no usa este miembro y sus controladores de minipuerto no deben establecerlo.

MaximumNumberOfTargets

Número de periféricos de destino que el adaptador puede controlar. De forma predeterminada, el valor de este miembro es SCSI_MAXIMUM_TARGETS_PER_BUS. 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 bus extendidas. El valor máximo de este miembro es 255.

SrbType

Tipo de SRB que se enviarán al controlador de minipuerto. Disponible a partir de Windows 8. Esto se establece en uno de los siguientes valores:

Valor Significado
SRB_TYPE_SCSI_REQUEST_BLOCK El controlador de minipuerto recibe SRB estándar.
SRB_TYPE_STORAGE_REQUEST_BLOCK El controlador de minipuerto recibe SRB extendidos.

AddressType

Tipo de dirección usado entre Storport y el controlador de minipuerto. Disponible a partir de Windows 8. Esto se puede establecer en el siguiente valor:

Valor Significado
STORAGE_ADDRESS_TYPE_BTL8 Direccionamiento de bus, destino y LUN (BTL) de 8 bits.

ReservedUchars[2]

Reservado para uso del sistema (pre-Windows 8).

SlotNumber

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

BusInterruptLevel2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

BusInterruptVector2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

InterruptMode2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

DmaChannel2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

DmaPort2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

DmaWidth2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

DmaSpeed2

Reservado para su uso por Storport. Los controladores de minipuerto no deben modificar este miembro.

DeviceExtensionSize

Tamaño, en bytes, requerido por el controlador de minipuerto para su extensión de dispositivo por adaptador. Un controlador de minipuerto usa su extensión de dispositivo como almacenamiento para la información de HBA determinada por el controlador. El controlador de puerto específico del sistema operativo inicializa cada extensión de dispositivo una vez, cuando asigna por primera vez la extensión y la rellena con ceros. Pasa un puntero a la extensión de dispositivo específica de HBA en cada llamada a un controlador de minipuerto. El tamaño especificado no incluye ningún almacenamiento solicitado por unidad lógica por controlador de minipuerto. El tamaño del almacenamiento por unidad lógica se especifica a través del campo SpecificLuExtensionSize , que se describe más adelante en este tema.

Storport no sigue el modelo de SCSIPort (que vuelve a inicializar la extensión del dispositivo cada vez que se detiene el adaptador y, por tanto, las llamadas posteriores a HwScsiFindAdapter reciben una extensión de dispositivo sin salida). En su lugar, Storport restablece la extensión de dispositivo a cero solo cuando se asigna por primera vez, por lo que solo la primera llamada a HwStorFindAdapter para un adaptador determinado recibe una extensión de dispositivo sin cero. Las llamadas posteriores a HwStorFindAdapter y otras funciones de minipuerto reciben la extensión del dispositivo según la última modificación del controlador de miniport. Esto permite al controlador de minipuerto mantener el conocimiento sobre el estado del adaptador entre Plug and Play (PnP) se detiene y reinicia, lo que posiblemente permite que el controlador de miniporte optimice su procedimiento de inicialización.

SpecificLuExtensionSize

Tamaño en bytes requerido por el controlador de minipuerto para su almacenamiento por unidad lógica, si existe, para controlar las transferencias de datos de más de 64 K. Storport inicializa este miembro en el valor del mismo miembro de la estructura de HW_INITIALIZATION_DATA enviada en la rutina StorPortInitialize .

Establezca este miembro 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 StorPortGetUncachedExtension.

SrbExtensionSize

Tamaño en bytes requerido por el controlador de minipuerto para su almacenamiento por solicitud, si existe, para controlar las transferencias de datos de más de 64 K. Storport inicializa este miembro en el valor del mismo miembro de la estructura de HW_INITIALIZATION_DATA enviada en la rutina StorPortInitialize .

Establezca este miembro antes de llamar a StorPortGetUncachedExtension para cambiar el tamaño del almacenamiento por solicitud basado en NumberOfPhysicalBreaks. Establezca este miembro 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

Si el hardware del dispositivo solo admite direcciones de 32 bits, Dma64BitAddresses debe establecerse en 0. Si el dispositivo admite direcciones de 64 bits, este campo indica si el HBA puede acceder a direcciones superiores a 4 GB.

Los adaptadores de Storport son necesarios para admitir DMA de ancho de bus. Por lo tanto, en una máquina PAE o de 64 bits, Storport inicializa Dma64BitAddresses para SCSI_DMA64_SYSTEM_SUPPORTED que indica que el adaptador puede tener acceso al intervalo completo de direcciones. Cuando los controladores de miniporte detectan este valor, deben devolver uno de los valores de la tabla siguiente en el mismo miembro para indicar al controlador de puerto que el controlador de miniporte admite DMA de 64 bits. Si el miniporte no puede hacerlo, podría degradar gravemente el rendimiento del adaptador.

Valor Significado
SCSI_DMA64_MINIPORT_SUPPORTED El controlador de minipuerto admite direcciones físicas de 64 bits para transferencias de E/S.
SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED El controlador de minipuerto admite direccionamiento de 64 bits completo. Esto indica que las solicitudes de E/S pueden tener direcciones > físicas de 4 GB. La extensión sin almacenar en caché, SenseInfo y la extensión Srb pueden existir por encima de 4 GB. Las asignaciones están restringidas a la alineación de límites de 4 GB para evitar que crucen un límite de 4 GB.
SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED El controlador de minipuerto admite direccionamiento de 64 bits completo. Esto indica que las solicitudes de E/S pueden tener direcciones > físicas de 4 GB. La extensión sin almacenar en caché, SenseInfo y la extensión Srb pueden existir por encima de 4 GB. Las asignaciones no tienen ningún requisito de alineación de límites.
SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED El controlador de minipuerto admite direccionamiento de 64 bits en una sola región de 4 GB. Esto indica que las solicitudes de E/S, la extensión sin almacenar en caché, SenseInfo y la extensión Srb pueden tener direcciones > físicas de 4 GB en una sola región de 4 GB.

ResetTargetSupported

Obsoleto. No use este miembro.

MaximumNumberOfLogicalUnits

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 extendidas. El valor máximo de este miembro es SCSI_MAXIMUM_LUNS_PER_TARGET.

WmiDataProvider

Cuando es TRUE, el controlador de minipuerto responde a las solicitudes de Instrumental de administración de Windows (WMI). Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir WMI. Además, se espera que los controladores de miniporte para adaptadores de canal de fibra admitan la API HBA de administración de SAN a través de WMI y los controladores de miniporte para adaptadores RAID basados en host para admitir la interfaz de administración RAID.

Los controladores miniport no deben modificar este valor.

SynchronizationModel

El modelo de sincronización de E/S que admite el controlador de minipuerto. Los valores posibles son:

Valor Significado
StorSynchronizeFullDuplex El minipuerto admite el modo dúplex completo.
StorSynchronizeHalfDuplex El minipuerto admite el modo dúplex medio.

HwMSInterruptRoutine

Puntero a la rutina HwMSInterruptRoutine del controlador de minipuerto, que es necesaria para cualquier controlador de miniporte de un HBA que genere interrupciones señaladas de mensaje (MSA). Un controlador de minipuerto establece este miembro en NULL si el HBA no genera MSIs.

InterruptSynchronizationMode

Valor de INTERRUPT_SYNCHRONIZATION_MODE que especifica el modo de sincronización de interrupciones. El modo de sincronización de interrupciones determina cómo sincroniza el controlador de puerto las interrupciones señaladas de mensaje.

DumpRegion

Estructura MEMORY_REGION que describe una región de memoria físicamente contigua que los controladores de miniporte pueden usar durante un volcado de memoria o hibernación.

RequestedDumpBufferSize

Tamaño en bytes de la extensión sin almacenar en caché que se va a asignar para su uso durante el volcado o hibernación.

VirtualDevice

Cuando es TRUE, no hay ningún hardware real detrás de este dispositivo (por ejemplo, ningún objeto DMA, interrupción, puertos de E/S). Storport se comporta de forma diferente en algunas circunstancias cuando admite un miniporte "virtual" en lugar de un miniport que controla el hardware real.

DumpMode

Indica el uso de la minipuerto durante el modo de volcado. Puede tener uno de los valores siguientes.

Valor Significado
DUMP_MODE_CRASH El minipuerto en modo de volcado se usa para un crashdump.
DUMP_MODE_HIBER El miniporte en modo de volcado se usa para una hibernación.
DUMP_MODE_MARK_MEMORY El minipuerto en modo de volcado se usa para marcar la memoria necesaria.
DUMP_MODE_RESUME El minipuerto en modo de volcado de memoria se usa para una reanudación de la hibernación.

DmaAddressWidth

Ancho de la dirección DMA de un adaptador. Los miniportes deben especificar STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED en FeatureSupport al proporcionar este valor. El valor especificado debe ser (0 <DmaAddressWidth<= 64). Este campo se puede usar a partir de Windows 10, versión 2004.

ExtendedFlags1

Reservado para uso del sistema.

MaxNumberOfIO

Número máximo de operaciones de E/S pendientes admitidas por el HBA. Storport establece el valor predeterminado en 1000. Si el HBA no admite 1000 operaciones de E/S pendientes, el miniporte debe ajustarlo a un valor más pequeño adecuado.

Si el HBA puede admitir más de 1000 operaciones de E/S pendientes, el miniporte puede aumentar este miembro a cualquier valor admitido por el hardware del adaptador. Para permitir más de 1000 operaciones de E/S pendientes, el HBA debe admitir uno de los siguientes métodos de direccionamiento DMA de 64 bits, establecido en el campo Dma64BitAddresses :

  • SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED
  • SCSI_DMA64_MINIPORT_FULL64BIT_NO_BOUNDARY_REQ_SUPPORTED
  • SCSI_DMA64_MINIPORT_64BIT_ONE_4GB_SUPPORTED

MaxIOsPerLun

Número máximo de solicitudes de E/S admitidas en un LUN. Storport establecerá este valor en un valor predeterminado de 255. Si un LUN no admite 255 solicitudes de E/S pendientes, el miniporte debe ajustar este miembro a un valor más pequeño adecuado. Este miembro debe ser <= MaxNumberOfIO. Para admitir MaxIOsPerLun> 255, el campo SrbType debe establecerse en SRB_TYPE_STORAGE_REQUEST_BLOCK. Disponible a partir de Windows 8.

InitialLunQueueDepth

Profundidad inicial de cola de E/S de LUN. Storport establece este valor en un valor predeterminado de 20 para miniportes físicos y en 250 para minipuertos virtuales. Este miembro ajusta la profundidad inicial de la cola para todos los LUN del adaptador. La profundidad de cola de un LUN individual se establece mediante una llamada a StorPortSetDeviceQueueDepth. Este miembro se establece normalmente en el mismo valor que MaxIOsPerLun. Disponible a partir de Windows 8.

BusResetHoldTime

Cantidad de tiempo, en microsegundos, para pausar el adaptador después de detectar un restablecimiento. Establezca este valor en 0 si no se necesita ningún tiempo de espera después de un restablecimiento de bus. Disponible a partir de Windows 8.

FeatureSupport

Características de Storport solicitadas para el adaptador. Disponible a partir de Windows 8. Un controlador de minipuerto puede establecer este miembro para que sea una máscara bit a bit de cualquiera de los valores siguientes:

Valor Significado
STOR_ADAPTER_FEATURE_DEVICE_TELEMETRY 0x00000001 El controlador de minipuerto admite la telemetría del dispositivo de almacenamiento.
STOR_ADAPTER_FEATURE_STOP_UNIT_DURING_POWER_DOWN 0x00000002 La minipuerto solicita recibir el comando STOP_UNIT durante el apagado del sistema.
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 El controlador de minipuerto quiere asignar UncachedExtension desde el nodo NUMA del adaptador.
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 El controlador de minipuerto prefiere usar la API del kernel de DMA V3 para el adaptador.
STOR_ADAPTER_FEATURE_ABORT_COMMAND 0x00000010 El controlador de minipuerto admite la capacidad de anular un comando pendiente a través de SRB_FUNCTION_ABORT_COMMAND.
STOR_ADAPTER_FEATURE_RICH_TEMPERATURE_THRESHOLD 0x00000020 El adaptador admite información de umbral de temperatura más completa de la definida en la especificación SPC4 de SCSI.
STOR_ADAPTER_DMA_ADDRESS_WIDTH_SPECIFIED 0x00000040 El controlador de minipuerto especificó el ancho de dirección DMA en DmaAddressWidth para el adaptador. Este valor se puede usar a partir de Windows 10, versión 2004.

Comentarios

El controlador storport asigna e inicializa esta estructura, proporciona la mayor cantidad de información de configuración específica de HBA posible y pasa la estructura a la rutina HwStorFindAdapter del controlador de miniporte. Storport no admite dispositivos no PnP, por lo que HwStorFindAdapter no busca el adaptador. Su función principal es inicializar PORT_CONFIGURATION_INFORMATION.

Requisitos

Requisito Valor
Header storport.h (include Srb.h, Storport.h, Strmini.h)

Consulte también

ACCESS_RANGE

HW_INITIALIZATION_DATA

HwMSInterruptRoutine

HwStorFindAdapter

HwStorInterrupt

INTERRUPT_SYNCHRONIZATION_MODE

MEMORY_REGION

StorPortGetUncachedExtension

StorPortInitialize

StorPortSetDeviceQueueDepth