+static
+BOOLEAN
+InsertInBootDriverList(
+ PLIST_ENTRY BootDriverListHead,
+ PBOOT_DRIVER_LIST_ENTRY BootDriverEntry)
+{
+ PBOOT_DRIVER_LIST_ENTRY DriverEntry;
+ PLIST_ENTRY ListEntry;
+
+ ASSERT(BootDriverEntry->FilePath.Buffer != NULL);
+ ASSERT(BootDriverEntry->RegistryPath.Buffer != NULL);
+
+ for (ListEntry = BootDriverListHead->Flink;
+ ListEntry != BootDriverListHead;
+ ListEntry = ListEntry->Flink)
+ {
+ DriverEntry = CONTAINING_RECORD(ListEntry,
+ BOOT_DRIVER_LIST_ENTRY,
+ Link);
+ if ((DriverEntry->FilePath.Buffer != NULL) &&
+ RtlEqualUnicodeString(&BootDriverEntry->FilePath,
+ &DriverEntry->FilePath,
+ TRUE))
+ {
+ return FALSE;
+ }
+
+ if ((DriverEntry->RegistryPath.Buffer != NULL) &&
+ RtlEqualUnicodeString(&BootDriverEntry->RegistryPath,
+ &DriverEntry->RegistryPath,
+ TRUE))
+ {
+ return FALSE;
+ }
+ }
+
+ InsertTailList(BootDriverListHead, &BootDriverEntry->Link);
+ return TRUE;
+}
+