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
已忽略。

超时
已忽略。

重试
已忽略。

操作码
这必须包含适用于响应的 AV/C 单元操作码, (可能与原始请求) 中提供的操作码不同。

OperandLength
将 设置为响应的操作数列表中的字节数。

操作数
响应的操作数列表。

NodeAddress
原始请求的源的节点地址。

代系
从原始请求获取的生成 ID。

在 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原始函数后获得的 NodeAddressGeneration 成员必须在后续响应中使用。 在任何情况下,应在从初始 AVC_FUNCTION_SEND_RESPONSE 完成例程返回之前提交下一 个AVC_FUNCTION_GET_REQUEST 函数,以便可以接收下一个单元请求。

此结构的建议用途是使用原始请求的内容,并根据需要为响应更新 OpcodeOperandLengthOperands 成员。

可以在 IRQL >= DISPATCH_LEVEL 调用此函数代码。

另请参阅

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION