estructura SCSI_WMI_REQUEST_BLOCK (minitape.h)
Esta estructura es una versión especial de un SCSI_REQUEST_BLOCK para su uso con comandos WMI.
Sintaxis
typedef struct _SCSI_WMI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR WMISubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR Reserved1;
UCHAR WMIFlags;
UCHAR Reserved2[2];
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID DataPath;
PVOID Reserved3;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG Reserved4;
ULONG Reserved6;
UCHAR Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
Miembros
Length
Especifica el tamaño en bytes de esta estructura.
Function
SRB_FUNCTION_WMI, que especifica que la solicitud es una solicitud WMI. Si este miembro no está establecido en SRB_FUNCTION_WMI, el controlador de minipuerto debe producir un error en la solicitud.
SrbStatus
Devuelve el estado de la solicitud completada. El controlador de minipuerto debe establecer este miembro antes de que notifique al controlador específico del sistema operativo que la solicitud se ha completado llamando a ScsiPortNotification con RequestComplete. El valor de este miembro puede ser cualquier valor enumerado para SrbStatus en SCSI_REQUEST_BLOCK.
WMISubFunction
Indica la acción WMI que se va a realizar. Un controlador de minipuerto llama a ScsiPortWmiDispatchFunction con MinorFunction establecido en este valor. El valor de subfunción corresponde al número irP secundario de WMI que identifica la operación WMI.
PathId
Indica el puerto o bus SCSI de la solicitud. Este valor es de base cero. Si SRB_WMI_FLAGS_ADAPTER_REQUEST se establece en WMIFlags, se reserva este miembro.
TargetId
Indica el controlador de destino o el dispositivo del bus. Si SRB_WMI_FLAGS_ADAPTER_REQUEST se establece en WMIFlags, se reserva este miembro.
Lun
Indica el número de unidad lógica del dispositivo. Si SRB_WMI_FLAGS_ADAPTER_REQUEST se establece en WMIFlags, se reserva este miembro.
Reserved1
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.
WMIFlags
Indica que la solicitud WMI es para el adaptador si se establece SRB_WMI_FLAGS_ADAPTER_REQUEST y que pathId, TargetId y Lun están reservados. De lo contrario, WMIFlags será NULL, lo que indica que la solicitud es para el dispositivo especificado por PathId, TargetId y Lun.
Reserved2[2]
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.
SrbFlags
Indica varios parámetros y opciones sobre la solicitud. SrbFlags es de solo lectura. Este miembro se establecerá en una o varias de las marcas siguientes ORed juntas:
SRB_FLAGS_DATA_IN
Indica que los datos se transferirán desde el dispositivo al sistema.
SRB_FLAGS_DATA_OUT
Indica que los datos se transferirán del sistema al dispositivo.
SRB_FLAGS_NO_DATA_TRANSFER
Indica ninguna transferencia de datos con esta solicitud. Si se establece, las marcas SRB_FLAGS_DATA_OUT, SRB_FLAGS_DATA_IN y SRB_FLAGS_UNSPECIFIED_DIRECTION están claras.
SRB_FLAGS_DISABLE_SYNCH_TRANSFER
Indica el HBA, si es posible, que debe realizar E/S asincrónica para esta solicitud de transferencia. Si la E/S sincrónica se negoció anteriormente, el HBA debe renegociar la E/S asincrónica antes de realizar la transferencia.
SRB_FLAGS_DISABLE_DISCONNECT
Indica que el HBA no debe permitir que el destino se desconecte del bus SCSI durante el procesamiento de esta solicitud.
DataTransferLength
Indica el tamaño en bytes del búfer de datos. Un controlador de minipuerto llama a ScsiPortWmiDispatchFunction con BufferSize establecido en este valor. Si se produce una ejecución inferior, el controlador de minipuerto debe actualizar este miembro al número de bytes transferidos realmente.
TimeOutValue
Indica el intervalo en segundos que la solicitud puede ejecutarse antes de que el controlador de puerto específico del sistema operativo considere que agota el tiempo de espera. Los controladores de minipuerto no son necesarios para las solicitudes de tiempo porque el controlador de puerto ya lo hace.
DataBuffer
Apunta al búfer de datos. Un controlador de minipuerto llama a ScsiPortWmiDispatchFunction con Buffer establecido en este valor. Los controladores de minipuerto pueden usar este valor como puntero de datos independientemente del valor de MapBuffers en el PORT_CONFIGURATION_INFORMATION para el HBA. Un controlador de minipuerto no puede transferir datos directamente al búfer mediante DMA.
DataPath
Especifica la ruta de acceso de datos WMI para esta solicitud. Un controlador de minipuerto llama a ScsiPortWmiDispatchFunction con DataPath establecido en este valor.
Reserved3
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.
OriginalRequest
Apunta al IRP para esta solicitud. Este miembro es irrelevante para los controladores de minipuerto.
SrbExtension
Apunta a la extensión Srb. Un controlador de minipuerto no debe usar este miembro si establece SrbExtensionSize en cero en el HW_INITIALIZATION_DATA. El controlador de puerto específico del sistema operativo no inicializa la memoria en SrbExtension y el HBA puede acceder directamente a los datos determinados por el controlador de miniporte. La dirección física correspondiente se puede obtener llamando a ScsiPortGetPhysicalAddress con el puntero SrbExtension .
Reserved4
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.
Reserved6
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto. Este miembro es válido a partir de Windows Server 2003 con SP1.
Reserved5[16]
Reservado para uso del sistema y no disponible para su uso por los controladores de minipuerto.
Comentarios
Los controladores de filtro y clase de almacenamiento de Windows NT pueden enviar SRB WMI al controlador de puerto del sistema. El controlador de puerto del sistema controlará determinadas solicitudes WMI en nombre de los controladores de minipuerto. Si el controlador de puerto no puede controlar una solicitud WMI, reenvía la solicitud al controlador de minipuerto.
Un controlador de minipuerto recibe solicitudes WMI del controlador de puerto solo si el controlador de miniporte establece WmiDataProvider en la estructura PORT_CONFIGURATION_INFORMATION. Si el controlador de minipuerto admite una solicitud, debe procesarla y completarla llamando dos veces a ScsiPortNotification , primero con RequestComplete y, a continuación, con NextRequest (o NextLuRequest).
Para obtener información sobre cómo admitir WMI en controladores de minipuerto, consulta Instrumental de administración de Windows.
Requisitos
Requisito | Valor |
---|---|
Header | minitape.h (incluya Storport.h, Srb.h, Storport.h, Minitape.h) |