Fungsi WdfObjectAllocateContext (wdfobject.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfObjectAllocateContext mengalokasikan ruang konteks untuk objek kerangka kerja tertentu.
Sintaks
NTSTATUS WdfObjectAllocateContext(
[in] WDFOBJECT Handle,
[in] PWDF_OBJECT_ATTRIBUTES ContextAttributes,
[out] PVOID *Context
);
Parameter
[in] Handle
Handel ke objek kerangka kerja.
[in] ContextAttributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang disediakan penelepon yang menjelaskan ruang konteks.
[out] Context
Penunjuk ke lokasi yang menerima penunjuk ke ruang konteks yang dialokasikan.
Nilai kembali
WdfObjectAllocateContext mengembalikan STATUS_SUCCESS jika operasi berhasil. Jika tidak, metode ini mungkin mengembalikan salah satu nilai berikut:
Menampilkan kode | Deskripsi |
---|---|
|
Parameter yang tidak valid terdeteksi. |
|
Anggota ContextTypeInfo dari struktur WDF_OBJECT_ATTRIBUTES bahwa parameter ContextAttributes yang ditentukan tidak valid. |
|
Ruang konteks tidak dapat dialokasikan. |
|
Driver telah mengalokasikan ruang konteks yang cocok dengan anggota ContextTypeInfo dari struktur WDF_OBJECT_ATTRIBUTES yang ditentukan ContextAttributes . Dalam situasi ini, penunjuk dalam parameter Konteks menerima penunjuk ke ruang konteks yang ada dan tidak mengalokasikan ruang konteks duplikat. |
|
Objek yang ditentukan parameter Handle sedang dihapus. Dalam situasi ini, kerangka kerja tidak mengalokasikan ruang konteks. |
Metode ini mungkin juga mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Biasanya, driver membuat ruang konteks objek dengan menentukan struktur WDF_OBJECT_ATTRIBUTES saat mereka memanggil metode pembuatan objek kerangka kerja, seperti WdfDeviceCreate.
Jika Anda ingin driver Mengalokasikan lebih dari satu jenis ruang konteks ke beberapa objeknya, driver dapat memanggil WdfObjectAllocateContext satu atau beberapa kali setelah disebut metode pembuatan objek. Setiap panggilan ke WdfObjectAllocateContext harus menentukan jenis konteks yang berbeda. (Anggota ContextTypeInfo dari struktur WDF_OBJECT_ATTRIBUTES mengidentifikasi jenis konteks.)
Jika driver Anda memanggil WdfObjectAllocateContext lebih dari sekali untuk objek tertentu, Anda dapat menyediakan fungsi panggilan balik EvtCleanupCallback dan EvtDestroyCallback terpisah untuk setiap konteks.
Saat memanggil WdfObjectAllocateContext, jangan tentukan ParentObject dalam struktur WDF_OBJECT_ATTRIBUTES .
Ketika kerangka kerja mengalokasikan ruang konteks untuk objek, kerangka kerja juga menginisialisasi ruang konteks.
Untuk informasi selengkapnya tentang ruang konteks objek, lihat Ruang Konteks Objek Kerangka Kerja.
Untuk informasi selengkapnya tentang aturan pembersihan untuk hierarki objek kerangka kerja, lihat Siklus Hidup Objek Kerangka Kerja.
Contoh
Contoh kode berikut membuat ruang konteks untuk objek permintaan. Ruang konteks didasarkan pada struktur REQUEST_CONTEXT contoh.
typedef struct _REQUEST_CONTEXT {
WDFMEMORY InputMemoryBuffer;
WDFMEMORY OutputMemoryBuffer;
} REQUEST_CONTEXT, *PREQUEST_CONTEXT;
PREQUEST_CONTEXT reqContext = NULL;
WDF_OBJECT_ATTRIBUTES attributes;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&attributes,
REQUEST_CONTEXT
);
status = WdfObjectAllocateContext(
Request,
&attributes,
&reqContext
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfobject.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf) |