AVC_FUNCTION_SEND_RESPONSE
AVC_FUNCTION_SEND_RESPONSE函式程式碼可用來回應 AV/C 單位和子單位要求。
I/O 狀態欄塊
如果成功,AV/C 通訊協定驅動程式可能會將 Irp-IoStatus.Status > 設定為下列其中一項:
STATUS_SUCCESS回應是否因為原始要求而因為一或多個匯流排重設而捨棄,或
STATUS_PENDING如果成功將回應傳遞至 61883.sys (表示成功傳遞至要求啟動器)
可能的其他傳回值包括:
傳回值 | 描述 |
---|---|
STATUS_INSUFFICIENT_RESOURCES | 內部緩衝區配置失敗。 |
註解
此函式會使用 AVC_COMMAND_IRB 結構,如下所示。
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;
規格需求
頭: Avc.h (包含 Avc.h)
AVC_COMMAND_IRB輸入
通用
這個成員的 Function 子成員必須設定為 從AVC_FUNCTION列舉AVC_FUNCTION_SEND_RESPONSE 。
SubunitAddrFlag
設定為從 AVC_FUNCTION_GET_REQUEST 完成取得的值。
AlternateOpcodesFlag
忽略。
TimeoutFlag
忽略。
RetryFlag
忽略。
CommandType
針對回應忽略。
ResponseCode
這個成員必須設定為 AvcResponseCode 列舉中的其中一個值。
SubunitAddr
設定為從 AVC_FUNCTION_GET_REQUEST 完成取得的值。
AlternateOpcodes
忽略。
逾時
忽略。
重試
忽略。
OpCode
這必須包含適用于回應的 AV/C 單位 opcode, (可能與原始要求) 中提供的 opcode 不同。
OperandLength
設定為回應運算元清單中的位元組數目。
運算元
回應的運算元清單。
NodeAddress
原始要求來源的節點位址。
世代
從原始要求取得的產生識別碼。
在GUID_AVC_CLASS裝置介面的內容中, AVC_FUNCTION_SEND_RESPONSE 函式程式碼是用來回應 AV/C 單位要求。
如果是 avc.sys(的 虛擬實例,也就是註冊GUID_VIRTUAL_AVC_CLASS裝置介面) 的實例, AVC_FUNCTION_SEND_RESPONSE 函式程式碼可用來回應 AV/C 單位 和 子單位要求。
如果第一個回應使用從 AvcResponseType列舉) (AVC_RESPONSE_INTERIM回應碼,則預期會進行後續處理。 完成AVC_FUNCTION_GET_REQUEST原始函式所取得的NodeAddress和Generation成員,必須在後續回應中使用。 在任何情況下,應該先提交下一個 AVC_FUNCTION_GET_REQUEST 函式,再從初始 AVC_FUNCTION_SEND_RESPONSE 完成常式傳回,以便收到下一個單元要求。
此結構的建議用法是使用原始要求的內容,並視回應更新 Opcode、 OperandLength和 Operands 成員。
此函式程式碼可以在 IRQL > = DISPATCH_LEVEL呼叫。