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.