Função ScsiPortWmiDispatchFunction (scsiwmi.h)
A rotina ScsiPortWmiDispatchFunction é uma rotina de expedição para drivers de miniport que dão suporte ao WMI.
Sintaxe
BOOLEAN ScsiPortWmiDispatchFunction(
[in] PSCSI_WMILIB_CONTEXT WmiLibInfo,
[in] UCHAR MinorFunction,
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] PVOID DataPath,
[in] ULONG BufferSize,
[in] PVOID Buffer
);
Parâmetros
[in] WmiLibInfo
Ponteiro para uma estrutura SCSI_WMILIB_CONTEXT que contém informações de registro para blocos de dados e blocos de eventos de um driver de miniport e define pontos de entrada para as rotinas de retorno de chamada da biblioteca WMI do driver de miniport.
[in] MinorFunction
Indica a ação WMI a ser executada. O driver de miniporto define MinorFunction como Srb-WmiSubFunction> do SRB de entrada.
[in] DeviceContext
Ponteiro para um valor de contexto definido pelo driver de miniport. O driver de porta passará DeviceContext para a rotina de retorno de chamada HwScsiWmiXxxx do driver de miniport. Esse valor normalmente apontaria para uma estrutura de HW_DEVICE_EXTENSION.
[in] RequestContext
Ponteiro para uma estrutura SCSIWMI_REQUEST_CONTEXT que contém informações de contexto para o SRB do WMI. Se o SRB puder ser pendente, o driver de miniporto deverá alocar essa estrutura da extensão SRB porque o contexto de solicitação deve permanecer válido até que ScsiPortWmiPostProcess retorne com o status final de retorno do SRB e o tamanho do buffer. ScsiPortWmiDispatchFunction passará RequestContext para a rotina de retorno de chamada do driver de miniport que processa essa solicitação.
[in] DataPath
Ponteiro para um GUID que representa o bloco de dados associado à solicitação. O driver de miniporte define DataPath como Srb-DataPath> do SRB de entrada.
[in] BufferSize
Especifica o tamanho em bytes do buffer de dados. O driver de miniporto define BufferSize como Srb-DataTransferLength> do SRB de entrada.
[in] Buffer
Ponteiro para o buffer de dados. O driver de miniporto define Buffer como Srb-DataBuffer> do SRB de entrada.
Retornar valor
ScsiPortWmiDispatchFunction retornaráTRUE se a solicitação estiver pendente ou FALSE se a solicitação tiver sido concluída.
Comentários
Quando um driver de miniporto recebe um SRB no qual o membro function é definido como SRB_FUNCTION_WMI, ele chama ScsiPortWmiDispatchFunction com parâmetros de solicitação, incluindo um ponteiro para uma estrutura inicializada SCSI_WMILIB_CONTEXT. Essa estrutura contém informações sobre os blocos de dados e os blocos de eventos do driver de miniport e define pontos de entrada para as rotinas de retorno de chamada HwScsiWmiXxx do driver de miniport.
ScsiPortWmiDispatchFunction confirma que o SRB é uma solicitação WMI e determina se o bloco especificado pela solicitação é válido para o driver de miniport. Se essas condições forem atendidas, ScsiPortWmiDispatchFunction processará o SRB chamando o ponto de entrada HwScsiWmiXxx apropriado na estrutura de SCSI_WMILIB_CONTEXT do driver de miniport. Se o driver de miniporto não definir um ponto de entrada para uma rotina HwScsiWmiXxxx opcional, o driver de porta manipulará a solicitação.
Em ambos os casos, após o retorno de ScsiPortWmiDispatchFunction , o driver de miniport deve fazer o seguinte para solicitações que não está pendente:
- Definir DataTransferLength >Srb como o valor retornado por ScsiPortWmiGetReturnSize
- Defina srb->SrbStatus como o valor retornado por ScsiPortWmiGetReturnStatus
- Chamar ScsiPortNotification com RequestComplete e novamente com NextRequest
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | scsiwmi.h (inclua Miniport.h, Scsi.h) |