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 está asignado 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 ninguna suposición sobre el uso de interrupciones del HBA, por lo que el valor predeterminado es cero. Storport inicializa este miembro y los controladores de miniport no deben modificarlo.
BusInterruptVector
Vector relativo al bus devuelto por el HBA. Storport no realiza ninguna suposición 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 miniport no deben modificarlo.
InterruptMode
Especifica si el HBA usa interrupciones LevelSensitive o Latched (a veces denominadas "desencadenadas por el borde"). 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 miniport 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 miniporte 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 miniporte 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 miniport 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 miniport 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 miniport no deben modificarlo.
DmaSpeed
Velocidad de transferencia de datos DMA para Eisa HBAs. Storport inicializa este miembro y los controladores de miniport no deben modificarlo.
AlignmentMask
Máscara que indica las restricciones de alineación de 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 (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. 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 deben alinearse 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 crashdump o una hibernación.
Reserved
Reservado para uso del sistema (Windows 8 previo).
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 el IniciadorBusId de entrada[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 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. Normalmente, este valor está limitado por el valor establecido para MaximumNumberOfTargets.
ScatterGather
Cuando es TRUE, el HBA admite dispersión o recopilación. Storport inicializa este miembro en TRUE porque sus controladores de minipuerto deben admitir dispersión y recopilación. Los controladores de miniport 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. No establecer este miembro en TRUE hará que el dispositivo HBA no se inicie).
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 miniport 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. No establecer este miembro en TRUE hará que el dispositivo HBA no se inicie).
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 los vaciados de la 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
Cuando 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 miniport 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 ciclo único. Storport inicializa este miembro en FALSE, ya que no admite DMA en modo subordinado. Los controladores miniport 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 siguientes valores 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 del 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, el 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 puesta en cola etiquetada. Los controladores miniport 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 miniport 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 miniport 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. Se establece en uno de los siguientes valores:
Valor | Significado |
---|---|
SRB_TYPE_SCSI_REQUEST_BLOCK | El controlador de minipuerto recibe srBs estándar. |
SRB_TYPE_STORAGE_REQUEST_BLOCK | El controlador de minipuerto recibe srBs 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 (Windows 8 previo).
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 lo 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 de unidad lógica solicitado por controlador de miniporte. 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 cero). En su lugar, Storport restablece la extensión de dispositivo en 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 como la última modificación del controlador de miniport. Esto permite que el controlador de miniporte mantenga 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 requeridos por el controlador de miniport para su almacenamiento por unidad lógica, si existe, para controlar las transferencias de datos mayores que 64K. 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 requeridos por el controlador de miniport para su almacenamiento por solicitud, si existe, para controlar las transferencias de datos mayores de 64 000. 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 miniporte 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 minipuerto 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 el direccionamiento completo de 64 bits. 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 el direccionamiento completo de 64 bits. 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 minipuerto para adaptadores RAID basados en host son necesarios para admitir la interfaz de administración raid.
Los controladores de minipuerto 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 minipuerto de un HBA que genera interrupciones señaladas de mensaje (MSIs). 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 del 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 minipuerto que controla el hardware real.
DumpMode
Indica el uso del miniporte 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 miniporte en modo de volcado se usa para marcar la memoria necesaria. |
DUMP_MODE_RESUME | El minipuerto en modo de volcado 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 lo establecerá 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 la 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 la 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 | Las solicitudes de minipuerto para recibir el comando STOP_UNIT durante el apagado del sistema. |
STOR_ADAPTER_UNCACHED_EXTENSION_NUMA_NODE_PREFERRED 0x00000004 | El controlador de minipuerto quiere que se asigne UncachedExtension desde el nodo NUMA del adaptador. |
STOR_ADAPTER_DMA_V3_PREFERRED 0x00000008 | El controlador de minipuerto prefiere usar la API del kernel 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) |