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 |