Membuat Objek Perangkat (Platform Pemfilteran Windows)
Driver callout harus membuat objek perangkat sebelum dapat mendaftarkan callout-nya dengan mesin filter. Bagaimana driver callout membuat objek perangkat tergantung pada apakah driver callout didasarkan pada Windows Driver Model (WDM) atau Windows Driver Frameworks (WDF).
Driver Callout WDM-Based
Jika driver callout didasarkan pada WDM, ia membuat objek perangkat dengan memanggil fungsi IoCreateDevice . Contohnya:
PDEVICE_OBJECT deviceObject;
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
NTSTATUS status;
...
// Create a device object
status =
IoCreateDevice(
DriverObject,
0,
NULL,
FILE_DEVICE_UNKNOWN,
FILE_DEVICE_SECURE_OPEN,
FALSE,
&deviceObject
);
...
return status;
}
Driver Callout WDF-Based
Jika driver callout didasarkan pada WDF, ia membuat objek perangkat kerangka kerja dengan memanggil fungsi WdfDeviceCreate . Untuk mendaftarkan callout-nya dengan mesin filter, driver callout berbasis WDF harus mendapatkan pointer ke objek perangkat WDM yang terkait dengan objek perangkat kerangka kerja. Driver callout berbasis WDF mendapatkan pointer ke objek perangkat WDM ini dengan memanggil fungsi WdfDeviceWdmGetDeviceObject . Contohnya:
WDFDEVICE wdfDevice;
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
)
{
WDFDRIVER driver;
PWDFDEVICE_INIT deviceInit;
PDEVICE_OBJECT deviceObject;
NTSTATUS status;
...
// Allocate a device initialization structure
deviceInit =
WdfControlDeviceInitAllocate(
driver;
&SDDL_DEVOBJ_KERNEL_ONLY
);
// Set the device characteristics
WdfDeviceInitSetCharacteristics(
deviceInit,
FILE_DEVICE_SECURE_OPEN,
FALSE
);
// Create a framework device object
status =
WdfDeviceCreate(
&deviceInit,
WDF_NO_OBJECT_ATTRIBUTES,
&wdfDevice
);
// Check status
if (status == STATUS_SUCCESS) {
// Initialization of the framework device object is complete
WdfControlFinishInitializing(
wdfDevice
);
// Get the associated WDM device object
deviceObject = WdfDeviceWdmGetDeviceObject(wdfDevice);
}
...
return status;
}
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk