Поделиться через


AVC_FUNCTION_SEND_RESPONSE

Код функции AVC_FUNCTION_SEND_RESPONSE используется для ответа на запросы единиц AV/C и вложенных единиц.

Блок состояния ввода-вывода

В случае успешного выполнения драйвер протокола 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

Common
Вложенная функция этого элемента должна иметь значение AVC_FUNCTION_SEND_RESPONSE из перечисления AVC_FUNCTION.

SubunitAddrFlag
Задайте значение, полученное в результате завершения AVC_FUNCTION_GET_REQUEST .

AlternateOpcodesFlag
Не обрабатывается.

TimeoutFlag
Не обрабатывается.

RetryFlag
Не обрабатывается.

Тип команды
Игнорируется для ответов.

ResponseCode
Этому элементу необходимо задать одно из значений перечисления AvcResponseCode .

SubunitAddr
Задайте значение, полученное в результате завершения AVC_FUNCTION_GET_REQUEST .

AlternateOpcodes
Не обрабатывается.

Timeout
Не обрабатывается.

Повторы
Не обрабатывается.

Код операции
Он должен содержать код операции единицы AV/C, соответствующий ответу (может отличаться от кода операции, предоставленного в исходном запросе).

OperandLength
Задайте количество байтов в списке операндов ответа.

Операнды
Список операндов ответа.

NodeAddress
Адрес узла источника исходного запроса.

Поколение
Идентификатор создания, полученный из исходного запроса.

В контексте интерфейса устройства GUID_AVC_CLASS код функции AVC_FUNCTION_SEND_RESPONSE используется для ответа только на запросы единиц AV/C.

В случае виртуальных экземпляров avc.sys (то есть экземпляров, регистрирующих интерфейс GUID_VIRTUAL_AVC_CLASS устройства) код функции AVC_FUNCTION_SEND_RESPONSE используется для ответа на запросы единиц AV/C и вложенных единиц.

Если в первом ответе используется код ответа AVC_RESPONSE_INTERIM (из перечисления AvcResponseType ), то ожидается выполнение последующей обработки. Элементы NodeAddress и Generation , полученные после завершения AVC_FUNCTION_GET_REQUEST исходной функции, должны использоваться в последующих ответах. В любом случае перед возвратом из начальной процедуры завершения AVC_FUNCTION_SEND_RESPONSE следует отправить следующую функцию AVC_FUNCTION_GET_REQUEST, чтобы можно было получить следующий запрос на единицу.

Эта структура рекомендуется использовать содержимое исходного запроса и обновить элементы Opcode, OperandLength и Operands в соответствии с ответом.

Этот код функции можно вызвать по адресу IRQL >= DISPATCH_LEVEL.

См. также:

AVC_FUNCTION_GET_REQUEST

AvcResponseCode

AVC_FUNCTION