reactos操作系统实现(76)
当键盘类驱动程序或鼠标类驱动程序枚举时,会找到很多设备,这些设备需要使用回调的方式来进行初始化。下面的函数,就是实现回调初始化驱动程序,如下: #001 VOID #002 NTAPI #003 IopReinitializeBootDrivers(VOID) #004 { #005 PDRIVER_REINIT_ITEM ReinitItem; #006 PLIST_ENTRY Entry; #007
找到需要重新初始化入口列表头。 #008 /* Get the first entry and start looping */ #009 Entry = ExInterlockedRemoveHeadList(&DriverBootReinitListHead, #010 &DriverBootReinitListLock); #011 while (Entry) #012 { #013 /* Get the item*/ #014 ReinitItem = CONTAINING_RECORD(Entry,DRIVER_REINIT_ITEM,ItemEntry); #015
增加初始化计数。 #016 /* Increment reinitialization counter */ #017 ReinitItem->DriverObject->DriverExtension->Count++; #018
删除需要重新初始化的标志。 #019 /* Remove the device object flag */ #020 ReinitItem->DriverObject->Flags &= ~DRVO_BOOTREINIT_REGISTERED; #021
调用重新初始化函数。 #022 /* Call the routine */ #023 ReinitItem->ReinitRoutine(ReinitItem->DriverObject, #024 ReinitItem->Context, #025 ReinitItem->DriverObject-> #026 DriverExtension->Count); #027 #028 /* Free the entry */ #029 ExFreePool(Entry); #030
移动下一次节点初始化。 #031 /* Move to the next one */ #032 Entry = ExInterlockedRemoveHeadList(&DriverBootReinitListHead, #033 &DriverBootReinitListLock); #034 } #035} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |