структура ACX_REQUEST_PARAMETERS (acxrequest.h)

Структура ACX_REQUEST_PARAMETERS получает параметры, связанные с запросом ACX ввода-вывода.

Следующие параметры основаны на вызываемой службе, например свойстве, методе или событии. Драйверы могут определить, какой набор использовать на основе ACX_ITEM_TYPE.

Три варианта использования этой структуры упрощают обмен данными с существующими типами потоковой передачи ядра (KS). Дополнительные сведения о KS см. в разделе Свойства, события и методы KS.

Конкретные сведения о каждом из типов см. в следующих разделах.

Кроме того, могут оказаться полезными следующие разделы.

Структура KSIDENTIFIER для наборов свойств аудиодрайверов(ks.h)

Синтаксис

typedef struct _ACX_REQUEST_PARAMETERS {
  USHORT           Size;
  UCHAR            MajorFunction;
  UCHAR            MinorFunction;
  ACX_REQUEST_TYPE Type;
  union {
    struct {
      GUID              Set;
      ULONG             Id;
      ACX_PROPERTY_VERB Verb;
      ACX_ITEM_TYPE     ItemType;
      ULONG             ItemId;
      PVOID             Control;
      ULONG             ControlCb;
      PVOID             Value;
      ULONG             ValueCb;
    } Property;
    struct {
      GUID            Set;
      ULONG           Id;
      ACX_METHOD_VERB Verb;
      ACX_ITEM_TYPE   ItemType;
      ULONG           ItemId;
      PVOID           Args;
      ULONG           ArgsCb;
      PVOID           Result;
      ULONG           ResultCb;
    } Method;
    struct {
      GUID           Set;
      ULONG          Id;
      ACX_EVENT_VERB Verb;
      ACX_ITEM_TYPE  ItemType;
      ULONG          ItemId;
      PVOID          Data;
      ULONG          DataCb;
      ACXEVENTDATA   EventData;
    } Event;
    struct {
      PVOID Control;
      ULONG ControlCb;
    } Create;
  } Parameters;
} ACX_REQUEST_PARAMETERS, *PACX_REQUEST_PARAMETERS;

Члены

Size

Размер структуры в байтах.

MajorFunction

Основная функция WDF IRP, используемая для этого запроса, например IRP_MJ_DEVICE_CONTROL. Дополнительные сведения о WDF IRP см. в разделе Коды основных функций IRP.

MinorFunction

Дополнительная функция WDF IRP, используемая для этого запроса. Дополнительные сведения о вспомогательной функции см. в разделе, связанном с основным IRP, например Plug and Play вспомогательные irp, дополнительные irps управления питанием и вспомогательные функции WMI.

Type

Перечисление ACX_REQUEST_TYPE описывает тип элементов, которые будут отправляться в запросе. В зависимости от указанного типа будет использоваться подмножество параметров, перечисленных ниже.

Parameters

Parameters.Property

Параметры свойств KS используются для запроса ACX. Дополнительные сведения см. в разделе Структура KSPROPERTY.

Parameters.Property.Set

Указывает GUID, который идентифицирует набор свойств потоковой передачи ядра.

Parameters.Property.Id

Указывает член набора свойств.

Parameters.Property.Verb

Перечисление ACX_PROPERTY_VERB , описывающее команду свойства.

Parameters.Property.ItemType

Перечисление ACX_ITEM_TYPE , описывающее тип элемента ACX, который является целевым объектом этого запроса.

Parameters.Property.ItemId

Идентификатор элемента.

Parameters.Property.Control

Указатель на параметры системной службы, которые используются в качестве дополнительных входных параметров для запроса ACX.

Parameters.Property.ControlCb

Число в байтах (размер) буфера Property.Control.

Parameters.Property.Value

Указатель на значение свойства.

Parameters.Property.ValueCb

Количество в байтах (размер) буфера Property.Value.

Parameters.Method

Параметры, используемые для запроса методов KS .

Parameters.Method.Set

Указывает GUID, который идентифицирует набор методов потоковой передачи ядра.

Parameters.Method.Id

Указывает член набора методов.

Parameters.Method.Verb

Перечисление ACX_METHOD_VERB , описывающее отправляемый элемент.

Parameters.Method.ItemType

Перечисление ACX_ITEM_TYPE , описывающее тип элемента ACX, который является целевым объектом этого запроса.

Parameters.Method.ItemId

Идентификатор отправляемого элемента.

Parameters.Method.Args

Указатель на необязательные аргументы для метода .

Parameters.Method.ArgsCb

Число в байтах (размер) необязательных аргументов для метода .

Parameters.Method.Result

Указатель на результат метода .

Parameters.Method.ResultCb

Число в байтах (размер) буфера Method.Result.

Parameters.Event

Параметры, используемые для событий KS , которые используются для запроса ACX. Дополнительные сведения см. в разделе Структура KSEVENT.

Parameters.Event.Set

Указывает GUID, идентифицирующий набор событий потоковой передачи ядра.

Parameters.Event.Id

Указывает член набора событий.

Parameters.Event.Verb

Перечисление ACX_EVENT_VERB , описывающее отправляемый элемент.

Parameters.Event.ItemType

Перечисление ACX_ITEM_TYPE , описывающее тип элемента ACX, который является целевым объектом этого запроса.

Parameters.Event.ItemId

Идентификатор элемента события.

Parameters.Event.Data

Указатель на данные события.

Parameters.Event.DataCb

Количество в байтах (размер) буфера Event.Data.

Parameters.Event.EventData

Объект ACXEVENTDATA. Дополнительные сведения об объектах ACX см. в разделе Сводка по объектам ACX.

Parameters.Create

Структура, содержащая параметры создания, используемые для запроса ACX.

Parameters.Create.Control

Указатель на параметры системной службы, которые используются в качестве дополнительных входных параметров для запроса ACX.

Parameters.Create.ControlCb

Количество в байтах (размер) буфера Create.Control.

Комментарии

Драйвер должен использовать ACX_REQUEST_PARAMETERS только при работе с запросами ACX ввода-вывода. Драйвер должен использовать DDIs запросов WDF для обработки запросов другого типа.

Пример

Ниже приведен пример использования.

    ACX_REQUEST_PARAMETERS              params;
    
    PAGED_CODE();

    //
    // Get request parameters.
    //
    ACX_REQUEST_PARAMETERS_INIT(&params);
    AcxRequestGetParameters(Request, &params);

    ASSERT(params.Type == AcxRequestTypeMethod);
    ASSERT(params.Parameters.Method.Verb == AcxMethodVerbSend);
    ASSERT(params.Parameters.Method.ArgsCb >= argsCb);
        
    args = (PAPX_CIRCUIT_FACTORY_ADD_CIRCUIT)params.Parameters.Method.Args;
    argsCb = params.Parameters.Method.ArgsCb; // use real value.

Требования к ACX

Минимальная версия ACX: 1.0

Дополнительные сведения о версиях ACX см. в статье Обзор версий ACX.

Требования

Требование Значение
Заголовок acxrequest.h

См. также раздел