PortClass InitializeAdapterDriver函数
2021-12-09
234
303
InitializeAdapterDriver函数是PortClass驱动DriverEntry调用的第一个函数,也是惟一的函数。该函数的功能和其它的MINI小端口驱动一样,都是初始化相应的MIN小端口驱动框架的“结构体”,并使用系统提供的类驱动的回调函数来初始化相应的IRP回调函数,而我们函数的第三个函数AddDevice应该初始化为如下:
DriverObject->DriverExtension->AddDevice = AddDevice;
用于创建FDO,并且实现FDO扩展单元的初始化和将FOD使用函数IoAttachDeviceToDeviceStack到PDO上。
这里我们提供一个大概代码,帮助大家理解相关的调用关系:
PORTCLASSAPI
NTSTATUS
NTAPI
PcInitializeAdapterDriver
(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPathName,
IN PDRIVER_ADD_DEVICE AddDevice
)
{
DriverObject->DriverExtension->AddDevice = AddDevice;
DriverObject->DriverUnload = DriverUnload;
DriverObject->MajorFunction[IRP_MJ_XX] = DispatchPnp;
return STATUS_SUCCESS;
}