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.

Consulte Também

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION