Home | Info | Community | Development | myReactOS | Contact Us
Definition at line 562 of file cmboot.c.
Referenced by CmGetSystemDriverList().
{ HCELL_INDEX Controls, GroupOrder, ListCell; UNICODE_STRING Name, DependList; PCM_KEY_VALUE ListNode; ULONG Length; PCM_KEY_NODE Node; ASSERT(Hive->ReleaseCellRoutine == NULL); /* Open the control key */ Node = HvGetCell(Hive, ControlSet); ASSERT(Node); RtlInitUnicodeString(&Name, L"Control"); Controls = CmpFindSubKeyByName(Hive, Node, &Name); if (Controls == HCELL_NIL) return FALSE; /* Open the service group order */ Node = HvGetCell(Hive, Controls); ASSERT(Node); RtlInitUnicodeString(&Name, L"ServiceGroupOrder"); GroupOrder = CmpFindSubKeyByName(Hive, Node, &Name); if (GroupOrder == HCELL_NIL) return FALSE; /* Open the list key */ Node = HvGetCell(Hive, GroupOrder); ASSERT(Node); RtlInitUnicodeString(&Name, L"list"); ListCell = CmpFindValueByName(Hive, Node, &Name); if (ListCell == HCELL_NIL) return FALSE; /* Now read the actual list */ ListNode = HvGetCell(Hive, ListCell); ASSERT(ListNode); if (ListNode->Type != REG_MULTI_SZ) return FALSE; /* Copy it into a buffer */ DependList.Buffer = (PWCHAR)CmpValueToData(Hive, ListNode, &Length); if (!DependList.Buffer) return FALSE; DependList.Length = DependList.MaximumLength = (USHORT)Length - sizeof(UNICODE_NULL); /* And start the recurive sort algorithm */ return CmpDoSort(DriverListHead, &DependList); }