AcxStreamInitAssignAcxRequestPreprocessCallback 함수(acxstreams.h)

AcxStreamInitAssignAcxRequestPreprocessCallback 함수는 AcxRequestPreprocessCallback을 스트림에 할당합니다.

구문

NTSTATUS AcxStreamInitAssignAcxRequestPreprocessCallback(
  PACXSTREAM_INIT                   StreamInit,
  EVT_ACX_OBJECT_PREPROCESS_REQUEST EvtObjectAcxRequestPreprocess,
  ACXCONTEXT                        DriverContext,
  ACX_REQUEST_TYPE                  RequestType,
  const GUID                        *Set,
  ULONG                             Id
);

매개 변수

StreamInit

스트림 초기화를 정의하는 데 사용되는 ACXSTREAM_INIT 개체에 의해 정의됩니다. ACX 개체에 대한 자세한 내용은 ACX - ACX 개체 요약을 참조하세요.

EvtObjectAcxRequestPreprocess

요청의 내부 처리를 수행하기 전에 ACX 프레임워크에서 호출할 EvtObjectAcxRequestPreprocess입니다.

DriverContext

현재 드라이버 컨텍스트를 나타내는 선택적 ACXCONTEXT 개체입니다.

RequestType

요청 유형을 정의하는 데 사용되는 ACX_REQUEST_TYPE 열거형 입니다. AcxRequestTypeAny를 지정하면 모든 요청에 대해 EvtObjectAcxRequestProcess가 호출됩니다.

Set

KSPROPERTY SET을 나타내는 GUID에 대한 포인터입니다(예: KSPROPSETID_RtAudio). NULL 또는 GUID_NULL 지정되면 RequestType과 일치하는 각 요청에 대해 EvtObjectAcxRequestPreprocess가 호출됩니다.

Id

KSPROPERTY ID를 나타내는 값입니다. 예를 들어 KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY구조를 사용하는 KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT. AcxItemIdAny를 지정하면 지정된 Set의 각 속성에 대해 EvtObjectAcxRequestPreprocess가 호출됩니다.

반환 값

호출이 성공하면 를 반환합니다 STATUS_SUCCESS . 그렇지 않으면 적절한 오류 코드를 반환합니다. 자세한 내용은 NTSTATUS 값 사용을 참조하세요.

설명

AcxStreamInitAssignAcxRequestPreprocessCallback은 ACX가 프레임워크 처리를 수행하기 전에 드라이버가 모든 요청을 처리할 수 있는 기회를 제공합니다. 드라이버는 AcxStreamDispatchAcxRequest 를 호출하여 ACX가 요청을 처리할 수 있도록 할 수 있습니다. 드라이버가 요청 자체를 처리하는 경우 WdfRequestComplete 또는 WdfRequestCompleteWithInformation을 호출하여 요청을 완료할 수 있습니다.

드라이버는 AcxStreamDispatchAcxRequest 또는 WdfRequestComplete(또는 WdfRequestCompleteWithInformation)을 호출해야 합니다. 드라이버는 요청으로 이러한 API 중 하나 이상을 호출해서는 안 됩니다.

드라이버는 둘 이상의 AcxRequestPreprocessCallback을 등록할 수 있습니다. ACX 프레임워크는 요청과 일치하는 첫 번째 할당된 AcxRequestPreprocessCallback을 호출합니다.

예제

사용 예제는 다음과 같습니다.

    //
    // Intercept register and unregister events properties.
    //
    status = AcxStreamInitAssignAcxRequestPreprocessCallback(
                                            StreamInit, 
                                            EvtStreamRequestPreprocessRegisterNotificationEvent,
                                            (ACXCONTEXT)Circuit,
                                            AcxRequestTypeProperty,
                                            &KSPROPSETID_RtAudio, 
                                            KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT);

    //
    // Intercept all other RtAudio properties - this must be after the above Assign call
    // since the above Assign call is more specific.
    //
    status = AcxStreamInitAssignAcxRequestPreprocessCallback(
                                            StreamInit, 
                                            EvtStreamRequestPreprocessRtAudio,
                                            (ACXCONTEXT)Circuit,
                                            AcxRequestTypeProperty,
                                            &KSPROPSETID_RtAudio, 
                                            AcxItemIdAny);

ACX 요구 사항

최소 ACX 버전: 1.0

ACX 버전에 대한 자세한 내용은 ACX 버전 개요를 참조하세요.

요구 사항

요구 사항
헤더 acxstreams.h
IRQL PASSIVE_LEVEL

추가 정보