Fungsi AcxStreamInitAssignAcxRequestPreprocessCallback (acxstreams.h)

Fungsi AcxStreamInitAssignAcxRequestPreprocessCallback menetapkan AcxRequestPreprocessCallback ke aliran.

Sintaks

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

Parameter

StreamInit

Ditentukan oleh objek ACXSTREAM_INIT, yang digunakan untuk menentukan inisialisasi aliran. Untuk informasi selengkapnya tentang Objek ACX, lihat ACX - Ringkasan Objek ACX.

EvtObjectAcxRequestPreprocess

EvtObjectAcxRequestPreprocess yang akan dipanggil oleh kerangka kerja ACX sebelum penanganan internal permintaan dilakukan.

DriverContext

Objek ACXCONTEXT opsional yang mewakili konteks driver saat ini.

RequestType

Enum ACX_REQUEST_TYPE yang digunakan untuk menentukan jenis permintaan. Jika AcxRequestTypeAny ditentukan, EvtObjectAcxRequestProcess akan dipanggil untuk semua permintaan.

Set

Pointer ke GUID yang mewakili KSPROPERTY SET, misalnya KSPROPSETID_RtAudio. Jika NULL atau GUID_NULL ditentukan, EvtObjectAcxRequestPreprocess akan dipanggil untuk setiap permintaan yang cocok dengan RequestType

Id

Nilai yang mewakili Id KSPROPERTY. Misalnya KSPROPERTY_RTAUDIO_REGISTER_NOTIFICATION_EVENT A yang menggunakan struktur KSRTAUDIO_NOTIFICATION_EVENT_PROPERTY. Jika AcxItemIdAny ditentukan, EvtObjectAcxRequestPreprocess akan dipanggil untuk setiap properti untuk Set yang ditentukan.

Menampilkan nilai

Mengembalikan STATUS_SUCCESS jika panggilan berhasil. Jika tidak, kode kesalahan akan menampilkan kode kesalahan yang sesuai. Untuk informasi selengkapnya, lihat Menggunakan Nilai NTSTATUS.

Keterangan

AcxStreamInitAssignAcxRequestPreprocessCallback memberi driver kesempatan untuk menangani permintaan apa pun sebelum ACX melakukan penanganan kerangka kerja. Driver dapat memanggil AcxStreamDispatchAcxRequest untuk memungkinkan ACX menangani permintaan. Jika driver menangani permintaan itu sendiri, driver dapat memanggil WdfRequestComplete atau WdfRequestCompleteWithInformation untuk menyelesaikan permintaan.

Driver harus memanggil AcxStreamDispatchAcxRequest atau WdfRequestComplete (atau WdfRequestCompleteWithInformation). Driver tidak boleh memanggil lebih dari salah satu API ini dengan permintaan.

Driver dapat mendaftarkan lebih dari satu AcxRequestPreprocessCallback. Kerangka kerja ACX akan memanggil AcxRequestPreprocessCallback pertama yang ditetapkan yang cocok dengan permintaan.

Contoh

Contoh penggunaan ditunjukkan di bawah ini.

    //
    // 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);

Persyaratan ACX

Versi ACX minimum: 1.0

Untuk informasi selengkapnya tentang versi ACX, lihat Gambaran umum versi ACX.

Persyaratan

Persyaratan Nilai
Header acxstreams.h
IRQL PASSIVE_LEVEL

Lihat juga