Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
2.4 KiB

/*++
Copyright (c) 2002 Microsoft Corporation
Module Name:
registry.c
Abstract:
This module contains the code that manipulates the registry
Author:
Neil Sandlin (neilsa) Jan 1 2002
Environment:
Kernel mode
Revision History :
--*/
#include "pch.h"
//
//
// Registry related definitions
//
#define SDBUS_REGISTRY_PARAMETERS_KEY L"Sdbus\\Parameters"
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT,SdbusLoadGlobalRegistryValues)
#endif
NTSTATUS
SdbusLoadGlobalRegistryValues(
VOID
)
/*++
Routine Description:
This routine is called at driver init time to load in various global
options from the registry.
These are read in from SYSTEM\CurrentControlSet\Services\Sdbus\Parameters.
Arguments:
none
Return value:
none
--*/
{
PRTL_QUERY_REGISTRY_TABLE parms;
NTSTATUS status;
ULONG parmsSize;
ULONG i;
//
// Needs a null entry to terminate the list
//
parmsSize = sizeof(RTL_QUERY_REGISTRY_TABLE) * (GlobalInfoCount+1);
parms = ExAllocatePool(PagedPool, parmsSize);
if (!parms) {
return STATUS_INSUFFICIENT_RESOURCES;
}
RtlZeroMemory(parms, parmsSize);
//
// Fill in the query table from our table
//
for (i = 0; i < GlobalInfoCount; i++) {
parms[i].Flags = RTL_QUERY_REGISTRY_DIRECT;
parms[i].Name = GlobalRegistryInfo[i].Name;
parms[i].EntryContext = GlobalRegistryInfo[i].pValue;
parms[i].DefaultType = REG_DWORD;
parms[i].DefaultData = &GlobalRegistryInfo[i].Default;
parms[i].DefaultLength = sizeof(ULONG);
}
//
// Perform the query
//
status = RtlQueryRegistryValues(RTL_REGISTRY_SERVICES | RTL_REGISTRY_OPTIONAL,
SDBUS_REGISTRY_PARAMETERS_KEY,
parms,
NULL,
NULL);
if (!NT_SUCCESS(status)) {
//
// This is possible during text mode setup
//
for (i = 0; i < GlobalInfoCount; i++) {
*GlobalRegistryInfo[i].pValue = GlobalRegistryInfo[i].Default;
}
}
ExFreePool(parms);
return STATUS_SUCCESS;
}