次の方法で共有


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

KSPROPSETID_RTAUDIO など、KSPROPERTY SET を表す GUID へのポインター。 NULL またはGUID_NULLを指定すると、RequestType に一致する要求ごとに EvtObjectAcxRequestPreprocess が呼び出されます。

Id

KSPROPERTY ID を表す値。たとえば、 KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY 構造体を使用する A 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 バージョンの概要」を参照してください。

要件

要件
Header acxstreams.h
IRQL PASSIVE_LEVEL

こちらもご覧ください