Partager via


AVC_FUNCTION_SEND_RESPONSE

Le code de la fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre aux demandes d’unités et de sous-unités AV/C.

Bloc d’état E/S

En cas de réussite, le pilote de protocole AV/C peut définir Irp-IoStatus.Status> sur :

  • STATUS_SUCCESS si la réponse est ignorée en raison d’une ou plusieurs réinitialisations de bus depuis la demande d’origine, ou

  • STATUS_PENDING si la réponse est correctement remise à 61883.sys (implique une remise réussie à l’initiateur de la demande)

Les autres valeurs de retour possibles sont les suivantes :

Valeur retournée Description
STATUS_INSUFFICIENT_RESOURCES Une allocation de mémoire tampon interne a échoué.

Commentaires

Cette fonction utilise la structure AVC_COMMAND_IRB comme indiqué ci-dessous.

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;

Spécifications

En-tête: Avc.h (inclure Avc.h)

entrée AVC_COMMAND_IRB

Commun
Le sous-membre Function de ce membre doit être défini sur AVC_FUNCTION_SEND_RESPONSE à partir de l’énumération AVC_FUNCTION.

Sous-unitéAddrFlag
Définissez sur la valeur obtenue à partir de l’achèvement AVC_FUNCTION_GET_REQUEST .

AlternateOpcodesFlag
Ignoré.

TimeoutFlag
Ignoré.

RetryFlag
Ignoré.

CommandType
Ignoré pour les réponses.

ResponseCode
Ce membre doit être défini sur l’une des valeurs de l’énumération AvcResponseCode .

Sous-unitéAddr
Définissez sur la valeur obtenue à partir de l’achèvement AVC_FUNCTION_GET_REQUEST .

AlternateOpcodes
Ignoré.

Délai d'expiration
Ignoré.

Nouvelle tentatives
Ignoré.

Opcode
Celui-ci doit contenir l’opcode d’unité AV/C approprié pour la réponse (peut être différent de l’opcode fourni dans la demande d’origine).

OperandLength
Définissez sur le nombre d’octets dans la liste d’opérandes de la réponse.

Opérandes
Liste des opérandes de la réponse.

NodeAddress
Adresse de nœud de la source de la requête d’origine.

Generation
ID de génération obtenu à partir de la requête d’origine.

Dans le contexte de l’interface d’appareil GUID_AVC_CLASS, le code de fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre uniquement aux demandes d’unités AV/C.

Dans le cas d’instances virtuelles de avc.sys (c’est-à-dire des instances qui inscrivent l’interface d’appareil GUID_VIRTUAL_AVC_CLASS), le code de fonction AVC_FUNCTION_SEND_RESPONSE est utilisé pour répondre aux demandes d’unité et de sous-unité AV/C.

Si la première réponse utilise le code de réponse AVC_RESPONSE_INTERIM (à partir de l’énumération AvcResponseType ), le traitement du suivi est attendu. Les membres NodeAddress et Generation , obtenus par l’achèvement de la fonction d’origine AVC_FUNCTION_GET_REQUEST , doivent être utilisés dans les réponses suivantes. Dans tous les cas, la fonction AVC_FUNCTION_GET_REQUEST suivante doit être envoyée avant de retourner à partir de la routine d’achèvement AVC_FUNCTION_SEND_RESPONSE initiale, afin que la demande d’unité suivante puisse être reçue.

L’utilisation recommandée de cette structure consiste à utiliser le contenu de la requête d’origine et à mettre à jour les membres Opcode, OperandLength et Operands en fonction de la réponse.

Ce code de fonction peut être appelé dans IRQL >= DISPATCH_LEVEL.

Voir aussi

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION