AVC_FUNCTION_SEND_RESPONSE
Der AVC_FUNCTION_SEND_RESPONSE Funktionscode wird verwendet, um auf Anforderungen von AV/C-Einheiten und -Untereinheiten zu reagieren.
E/A-Statusblock
Bei erfolgreicher Ausführung kann der AV/C-Protokolltreiber Irp-IoStatus.Status> auf folgendes festlegen:
STATUS_SUCCESS, wenn die Antwort aufgrund einer oder mehrerer Busrücksetzungen seit der ursprünglichen Anforderung verworfen wird, oder
STATUS_PENDING, wenn die Antwort erfolgreich an 61883.sys übermittelt wurde (impliziert eine erfolgreiche Übermittlung an den Initiator der Anforderung).
Mögliche andere Rückgabewerte sind:
Rückgabewert | BESCHREIBUNG |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Fehler bei der internen Pufferzuweisung. |
Kommentare
Diese Funktion verwendet die AVC_COMMAND_IRB-Struktur, wie unten gezeigt.
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;
Anforderungen
Header: Avc.h (Avc.h einschließen)
AVC_COMMAND_IRB-Eingabe
Common
Der Function-Unterteil dieses Members muss auf AVC_FUNCTION_SEND_RESPONSE aus der AVC_FUNCTION-Enumeration festgelegt werden.
SubunitAddrFlag
Legen Sie auf den Wert fest, der aus der AVC_FUNCTION_GET_REQUEST abgeschlossen wurde.
AlternateOpcodesFlag
Ignoriert.
TimeoutFlag
Ignoriert.
RetryFlag
Ignoriert.
CommandType
Wird für Antworten ignoriert.
ResponseCode
Dieser Member muss auf einen der Werte aus der AvcResponseCode-Enumeration festgelegt werden.
SubunitAddr
Legen Sie auf den Wert fest, der aus der AVC_FUNCTION_GET_REQUEST abgeschlossen wurde.
AlternateOpcodes
Ignoriert.
Timeout
Ignoriert.
Wiederholungsversuche
Ignoriert.
Opcode
Dieser muss den für die Antwort geeigneten AV/C-Einheits-Opcode enthalten (kann sich von dem in der ursprünglichen Anforderung angegebenen Opcode unterscheiden).
OperandLength
Legen Sie auf die Anzahl der Bytes in der Operandenliste der Antwort fest.
Operanden
Die Operandenliste der Antwort.
NodeAddress
Die Knotenadresse der Quelle der ursprünglichen Anforderung.
Generation
Die Generierungs-ID, die aus der ursprünglichen Anforderung abgerufen wurde.
Im Kontext der GUID_AVC_CLASS Geräteschnittstelle wird der AVC_FUNCTION_SEND_RESPONSE Funktionscode verwendet, um nur auf AV/C-Einheitenanforderungen zu reagieren.
Bei virtuellen Instanzen von avc.sys (d. h. Instanzen, die die GUID_VIRTUAL_AVC_CLASS Geräteschnittstelle registrieren), wird der AVC_FUNCTION_SEND_RESPONSE Funktionscode verwendet, um auf ANFORDERUNGEN von AV/C-Einheiten und Untereinheiten zu reagieren.
Wenn die erste Antwort den AVC_RESPONSE_INTERIM Antwortcode (aus der AvcResponseType-Enumeration ) verwendet, wird eine Nachverarbeitung erwartet. Die Member NodeAddress und Generation , die durch Abschluss der AVC_FUNCTION_GET_REQUEST ursprünglichen Funktion abgerufen wurden, müssen in nachfolgenden Antworten verwendet werden. In jedem Fall sollte die nächste AVC_FUNCTION_GET_REQUEST-Funktion übermittelt werden, bevor sie von der ursprünglichen AVC_FUNCTION_SEND_RESPONSE Abschlussroutine zurückgegeben wird, damit die nächste Einheitenanforderung empfangen werden kann.
Die empfohlene Verwendung dieser Struktur besteht darin, den Inhalt der ursprünglichen Anforderung zu verwenden und die Elemente Opcode, OperandLength und Operands entsprechend der Antwort zu aktualisieren.
Dieser Funktionscode kann unter IRQL >= DISPATCH_LEVEL aufgerufen werden.