次の方法で共有


ACX_REQUEST_PARAMETERS 構造体 (acxrequest.h)

ACX_REQUEST_PARAMETERS構造体は、I/O ACX 要求に関連付けられているパラメーターを受け取ります。

次のパラメーターは、呼び出されるサービス (プロパティ、メソッド、イベントなど) に基づいています。 ドライバーは、ACX_ITEM_TYPEに基づいて使用するセットを決定できます。

この構造の 3 つの用途により、既存のカーネル ストリーミング (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 に関連付けられている を参照してください。たとえば、マイナー IRP、Power Management マイナー IRPWMI マイナー IRP プラグ アンド プレイします。

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 項目の種類を記述する ACX_ITEM_TYPE 列挙。

Parameters.Property.ItemId

アイテム ID。

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 項目の種類を記述する ACX_ITEM_TYPE 列挙。

Parameters.Method.ItemId

送信されるアイテムのアイテム ID。

Parameters.Method.Args

メソッドの省略可能な引数へのポインター。

Parameters.Method.ArgsCb

メソッドの省略可能な引数のバイト数 (サイズ)。

Parameters.Method.Result

メソッドの結果へのポインター。

Parameters.Method.ResultCb

Method.Result バッファーのバイト数 (サイズ)。

Parameters.Event

ACX 要求に使用されている KS イベント に使用されるパラメーター。 詳細については、「 KSEVENT 構造体」を参照してください。

Parameters.Event.Set

カーネル ストリーミング イベント セットを識別する GUID を指定します。

Parameters.Event.Id

イベント セットのメンバーを指定します。

Parameters.Event.Verb

送信されるアイテムを記述する ACX_EVENT_VERB 列挙。

Parameters.Event.ItemType

この要求のターゲットである ACX 項目の種類を記述する ACX_ITEM_TYPE 列挙。

Parameters.Event.ItemId

イベント項目 ID。

Parameters.Event.Data

イベント データへのポインター。

Parameters.Event.DataCb

Event.Data バッファーのバイト数 (サイズ)。

Parameters.Event.EventData

ACXEVENTDATA オブジェクト。 ACX オブジェクトの詳細については、「 ACX オブジェクトの概要」を参照してください。

Parameters.Create

ACX 要求に使用される create パラメーターを含む 構造体。

Parameters.Create.Control

ACX 要求の追加の入力パラメーターとして使用されるシステム サービス パラメーターへのポインター。

Parameters.Create.ControlCb

Create.Control バッファーのバイト数 (サイズ)。

注釈

ドライバーは、I/O ACX 要求を操作する場合にのみ、ACX_REQUEST_PARAMETERSを使用する必要があります。 ドライバーは、WDF 要求 DDI を使用して、他の種類の要求を処理する必要があります。

使用例を次に示します。

    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 バージョンの概要」を参照してください。

要件

要件
Header acxrequest.h

こちらもご覧ください