AVC_FUNCTION_SEND_RESPONSE
O código da função AVC_FUNCTION_SEND_RESPONSE é usado para responder a solicitações de subunidade e unidade AV/C.
Bloco de Status de E/S
Se tiver êxito, o driver de protocolo AV/C poderá definir Irp-IoStatus.Status> como:
STATUS_SUCCESS se a resposta for descartada devido a uma ou mais redefinições de barramento desde a solicitação original ou
STATUS_PENDING se a resposta for entregue com êxito ao 61883.sys (implica uma entrega bem-sucedida ao iniciador de solicitação)
Outros valores retornados possíveis incluem:
Valor retornado | Descrição |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Falha na alocação de buffer interno. |
Comentários
Essa função usa a estrutura AVC_COMMAND_IRB conforme mostrado abaixo.
typedef struct _AVC_COMMAND_IRB {
AVC_IRB Common;
UCHAR SubunitAddrFlag : 1;
UCHAR AlternateOpcodesFlag : 1;
UCHAR TimeoutFlag : 1;
UCHAR RetryFlag : 1;
union {
UCHAR CommandType;
UCHAR ResponseCode;
};
PUCHAR SubunitAddr;
PUCHAR AlternateOpcodes;
LARGE_INTEGER Timeout;
UCHAR Retries;
UCHAR Opcode;
ULONG OperandLength;
UCHAR Operands[MAX_AVC_OPERAND_BYTES];
NODE_ADDRESS NodeAddress;
ULONG Generation;
} AVC_COMMAND_IRB, *PAVC_COMMAND_IRB;
Requisitos
Cabeçalho: Avc.h (incluir Avc.h)
Entrada AVC_COMMAND_IRB
Comum
O submembro Function desse membro deve ser definido como AVC_FUNCTION_SEND_RESPONSE da enumeração AVC_FUNCTION.
SubunitAddrFlag
Defina como o valor obtido da conclusão do AVC_FUNCTION_GET_REQUEST .
AlternateOpcodesFlag
Ignorado.
TimeoutFlag
Ignorado.
RetryFlag
Ignorado.
CommandType
Ignorado para respostas.
ResponseCode
Esse membro deve ser definido como um dos valores da enumeração AvcResponseCode .
SubunitAddr
Defina como o valor obtido da conclusão do AVC_FUNCTION_GET_REQUEST .
AlternateOpcodes
Ignorado.
Tempo Limite
Ignorado.
Novas tentativas
Ignorado.
Opcode
Isso deve conter o opcode de unidade AV/C apropriado para a resposta (pode ser diferente do opcode fornecido na solicitação original).
OperandLength
Defina como o número de bytes na lista de operandos da resposta.
Operandos
A lista de operandos da resposta.
NodeAddress
O endereço do nó da origem da solicitação original.
Generation
A ID de geração obtida da solicitação original.
No contexto da interface do dispositivo GUID_AVC_CLASS, o código da função AVC_FUNCTION_SEND_RESPONSE é usado para responder apenas às solicitações de unidade AV/C.
No caso de instâncias virtuais de avc.sys (ou seja, instâncias que registram a interface do dispositivo GUID_VIRTUAL_AVC_CLASS), o código da função AVC_FUNCTION_SEND_RESPONSE é usado para responder a solicitações de subunidade e unidade AV/C.
Se a primeira resposta usar o código de resposta AVC_RESPONSE_INTERIM (da enumeração AvcResponseType ), o processamento de acompanhamento será esperado. Os membros NodeAddress e Generation , obtidos pela conclusão do AVC_FUNCTION_GET_REQUEST função original, devem ser usados em respostas subsequentes. De qualquer forma, a próxima função AVC_FUNCTION_GET_REQUEST deve ser enviada antes de retornar da rotina inicial de conclusão AVC_FUNCTION_SEND_RESPONSE , para que a próxima solicitação de unidade possa ser recebida.
O uso recomendado dessa estrutura é usar o conteúdo da solicitação original e atualizar os membros Opcode, OperandLength e Operands conforme apropriado para a resposta.
Esse código de função pode ser chamado em IRQL >= DISPATCH_LEVEL.