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
STATUS_INVALID_PARAMETER
Parameter yang tidak valid terdeteksi.
STATUS_OBJECT_NAME_INVALID
Anggota ContextTypeInfo dari struktur WDF_OBJECT_ATTRIBUTES bahwa parameter ContextAttributes yang ditentukan tidak valid.
STATUS_INSUFFICIENT_RESOURCES
Ruang konteks tidak dapat dialokasikan.
STATUS_OBJECT_NAME_EXISTS
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.
STATUS_DELETE_PENDING
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)

Lihat juga

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceBuat