다음을 통해 공유


ACX_REQUEST_PARAMETERS 구조체(acxrequest.h)

ACX_REQUEST_PARAMETERS 구조체는 I/O ACX 요청과 연결된 매개 변수를 받습니다.

다음 매개 변수는 호출되는 서비스(예: 속성, 메서드 또는 이벤트)를 기반으로 합니다. 드라이버는 ACX_ITEM_TYPE 따라 사용할 집합을 결정할 수 있습니다.

이 구조체의 세 가지 용도는 기존 KS(커널 스트리밍) 형식으로의 통신을 용이하게 합니다. KS에 대한 자세한 내용은 KS 속성, 이벤트 및 메서드를 참조하세요.

각 형식의 특정 정보는 다음 topics 참조하세요.

또한 다음 topics 유용할 수 있습니다.

오디오 드라이버 속성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, 전원 관리 부 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 요청에 사용되는 만들기 매개 변수를 포함하는 구조체입니다.

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 버전 개요를 참조하세요.

요구 사항

요구 사항
헤더 acxrequest.h

추가 정보