Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um driver de callout deve criar um objeto de dispositivo antes de poder registrar os seus callouts com o mecanismo de filtro. Como um driver de saída cria um objeto de dispositivo depende se o driver de saída é baseado no Modelo de Driver do Windows (WDM) ou nos Windows Driver Frameworks (WDF).
WDM-Based Elementos de destaque
Se um driver de chamada for baseado no WDM, ele criará um objeto de dispositivo chamando a função IoCreateDevice. Por exemplo:
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;
}
WDF-Based Anotações de Drivers
Se um driver de chamada for baseado em WDF, ele criará um objeto de dispositivo da estrutura chamando a função WdfDeviceCreate. Para registar as suas chamadas de saída no mecanismo de filtro, um driver de chamadas de saída baseado em WDF deve obter um ponteiro para o objeto de dispositivo WDM associado ao objeto de dispositivo da framework. Um driver de callout baseado em WDF obtém um ponteiro para este objeto de dispositivo WDM chamando a função WdfDeviceWdmGetDeviceObject. Por exemplo:
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;
}