Condividi tramite


AVC_FUNCTION_SEND_RESPONSE

Il codice della funzione AVC_FUNCTION_SEND_RESPONSE viene usato per rispondere alle richieste di unità AV/C e subunit.

Blocco dello stato I/O

In caso di esito positivo, il driver del protocollo AV/C può impostare Irp-IoStatus.Status> su:

  • STATUS_SUCCESS se la risposta viene eliminata a causa di una o più reimpostazioni del bus dopo la richiesta originale o

  • STATUS_PENDING se la risposta viene recapitata correttamente a 61883.sys (implica il recapito corretto all'iniziatore della richiesta)

Gli altri valori restituiti possibili includono:

Valore restituito Descrizione
STATUS_INSUFFICIENT_RESOURCES Allocazione del buffer interna non riuscita.

Commenti

Questa funzione usa la struttura AVC_COMMAND_IRB, come illustrato di seguito.

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;

Requisiti

Intestazione: Avc.h (include Avc.h)

AVC_COMMAND_IRB Input

Common
Il sottomember Function di questo membro deve essere impostato su AVC_FUNCTION_SEND_RESPONSE dall'enumerazione AVC_FUNCTION.

SubunitAddrFlag
Impostare sul valore ottenuto dal AVC_FUNCTION_GET_REQUEST completamento.

AlternateOpcodesFlag
Ignorato.

TimeoutFlag
Ignorato.

RetryFlag
Ignorato.

CommandType
Ignorato per le risposte.

ResponseCode
Questo membro deve essere impostato su uno dei valori dell'enumerazione AvcResponseCode .

SubunitAddr
Impostare sul valore ottenuto dal AVC_FUNCTION_GET_REQUEST completamento.

AlternateOpcodes
Ignorato.

Timeout
Ignorato.

Tentativi
Ignorato.

Opcode
Deve contenere il codice operativo dell'unità AV/C appropriato per la risposta (può essere diverso dal codice operativo fornito nella richiesta originale).

OperandoLength
Impostare sul numero di byte nell'elenco operando della risposta.

Operandi
Elenco operando della risposta.

NodeAddress
Indirizzo del nodo dell'origine della richiesta originale.

Generazione
ID di generazione ottenuto dalla richiesta originale.

Nel contesto dell'interfaccia del dispositivo GUID_AVC_CLASS, il codice della funzione AVC_FUNCTION_SEND_RESPONSE viene usato per rispondere solo alle richieste di unità AV/C.

Nel caso di istanze virtuali di avc.sys (ovvero istanze che registrano l'interfaccia del dispositivo GUID_VIRTUAL_AVC_CLASS), il codice della funzione AVC_FUNCTION_SEND_RESPONSE viene usato per rispondere alle richieste di unità AV/C e subunit.

Se la prima risposta usa il codice di risposta AVC_RESPONSE_INTERIM (dall'enumerazione AvcResponseType ), è prevista l'elaborazione del completamento. I membri NodeAddress e Generation , ottenuti dal completamento della funzione originale AVC_FUNCTION_GET_REQUEST , devono essere usati nelle risposte successive. In ogni caso, la funzione AVC_FUNCTION_GET_REQUEST successiva deve essere inviata prima di tornare dalla routine di completamento iniziale AVC_FUNCTION_SEND_RESPONSE , in modo che venga ricevuta la richiesta di unità successiva.

L'uso consigliato di questa struttura consiste nell'usare il contenuto della richiesta originale e aggiornare i membri Opcode, OperandLength e Operandi in base alle esigenze della risposta.

Questo codice di funzione può essere chiamato in IRQL >= DISPATCH_LEVEL.

Vedere anche

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION