ACX_REQUEST_PARAMETERS structure (acxrequest.h)

The ACX_REQUEST_PARAMETERS structure receives parameters that are associated with an I/O ACX request.

The following parameters are based on the service that is being invoked, such as a property, method or event. Drivers can determine which set to use based on the ACX_ITEM_TYPE.

The three uses of this structure facilitate communications back to existing kernel streaming (KS) types. For more information about KS see KS Properties, Events, and Methods.

For specific information of each of the types, see the following topics.

In addition the following topics may be useful.

Audio Drivers Property Sets KSIDENTIFIER structure (ks.h)

Syntax

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;

Members

Size

The size of the structure in bytes.

MajorFunction

The WDF IRP major function that is used for this request, for example IRP_MJ_DEVICE_CONTROL. For more information about WDF IRP, see IRP Major Function Codes.

MinorFunction

The WDF IRP minor function that is used for this request. For more information about the Minor Function refer to the associated withe major IRP, for example Plug and Play Minor IRPs, Power Management Minor IRPs and WMI Minor IRPs.

Type

The ACX_REQUEST_TYPE enumeration describes the type of items that will be sent in the request. Depending on the type specified, a subset of the parameters listed below will be used.

Parameters

Parameters.Property

Parameters for KS Properties are being used for the ACX request. For more information, see KSPROPERTY structure.

Parameters.Property.Set

Specifies a GUID that identifies a kernel streaming property set.

Parameters.Property.Id

Specifies the member of the property set.

Parameters.Property.Verb

An ACX_PROPERTY_VERB enumeration that describes the property verb.

Parameters.Property.ItemType

An ACX_ITEM_TYPE enumeration that describes the ACX item type being the target of this request.

Parameters.Property.ItemId

The Item ID.

Parameters.Property.Control

A pointer to system service parameters that are used as additional input parameters for the ACX request.

Parameters.Property.ControlCb

The count in bytes (size) of the Property.Control buffer.

Parameters.Property.Value

A pointer to the property value.

Parameters.Property.ValueCb

The count in bytes (size) of the Property.Value buffer.

Parameters.Method

Parameters used for a KS Methods request.

Parameters.Method.Set

Specifies a GUID that identifies a kernel streaming method set.

Parameters.Method.Id

Specifies the member of the method set.

Parameters.Method.Verb

An ACX_METHOD_VERB enumeration that describes the item being sent.

Parameters.Method.ItemType

An ACX_ITEM_TYPE enumeration that describes the ACX item type being the target of this request.

Parameters.Method.ItemId

The Item ID of the item being sent.

Parameters.Method.Args

A pointer to optional arguments for the method.

Parameters.Method.ArgsCb

The count in bytes (size) of the optional arguments for the method.

Parameters.Method.Result

A pointer to the result of the method.

Parameters.Method.ResultCb

The count in bytes (size) of the Method.Result buffer.

Parameters.Event

Parameters used for KS Events that are being used for the ACX request. For more information, see KSEVENT structure.

Parameters.Event.Set

Specifies a GUID that identifies a kernel streaming event set.

Parameters.Event.Id

Specifies the member of the event set.

Parameters.Event.Verb

An ACX_EVENT_VERB enumeration that describes the item being sent.

Parameters.Event.ItemType

An ACX_ITEM_TYPE enumeration that describes the ACX item type being the target of this request.

Parameters.Event.ItemId

The event Item ID.

Parameters.Event.Data

A pointer to the event data.

Parameters.Event.DataCb

The count in bytes (size) of the Event.Data buffer.

Parameters.Event.EventData

An ACXEVENTDATA Object. For more information about ACX objects, see Summary of ACX Objects.

Parameters.Create

The structure that contains the create parameters that are being used for the ACX request.

Parameters.Create.Control

A pointer to system service parameters that are used as additional input parameters for the ACX request.

Parameters.Create.ControlCb

The count in bytes (size) of the Create.Control buffer.

Remarks

Driver must use ACX_REQUEST_PARAMETERS only when working with I/O ACX Requests. Driver must use WDF request DDIs to handle other type of requests.

Example

Example usage is shown below.

    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 requirements

Minimum ACX version: 1.0

For more information about ACX versions, see ACX version overview.

Requirements

Requirement Value
Header acxrequest.h

See also