mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 17:27:03 +00:00
Added registry shutdown function CmShutdownRegistry()
Updated shutdown sequence svn path=/trunk/; revision=1379
This commit is contained in:
parent
beaf6eac44
commit
aa5a575bd0
6 changed files with 224 additions and 48 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: registry.c,v 1.39 2000/10/05 14:55:25 jean Exp $
|
/* $Id: registry.c,v 1.40 2000/10/05 19:13:48 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -202,6 +202,11 @@ static KSPIN_LOCK CmiKeyListLock;
|
||||||
/* ----------------------------------------- Forward Declarations */
|
/* ----------------------------------------- Forward Declarations */
|
||||||
|
|
||||||
|
|
||||||
|
static NTSTATUS RtlpGetRegistryHandle(ULONG RelativeTo,
|
||||||
|
PWSTR Path,
|
||||||
|
BOOLEAN Create,
|
||||||
|
PHANDLE KeyHandle);
|
||||||
|
|
||||||
static NTSTATUS CmiObjectParse(PVOID ParsedObject,
|
static NTSTATUS CmiObjectParse(PVOID ParsedObject,
|
||||||
PVOID *NextObject,
|
PVOID *NextObject,
|
||||||
PUNICODE_STRING FullPath,
|
PUNICODE_STRING FullPath,
|
||||||
|
@ -225,18 +230,18 @@ static ULONG CmiGetMaxValueNameLength(PREGISTRY_FILE RegistryFile,
|
||||||
PKEY_BLOCK KeyBlock);
|
PKEY_BLOCK KeyBlock);
|
||||||
static ULONG CmiGetMaxValueDataLength(PREGISTRY_FILE RegistryFile,
|
static ULONG CmiGetMaxValueDataLength(PREGISTRY_FILE RegistryFile,
|
||||||
PKEY_BLOCK KeyBlock);
|
PKEY_BLOCK KeyBlock);
|
||||||
static NTSTATUS CmiScanForSubKey(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiScanForSubKey(IN PREGISTRY_FILE RegistryFile,
|
||||||
IN PKEY_BLOCK KeyBlock,
|
IN PKEY_BLOCK KeyBlock,
|
||||||
OUT PKEY_BLOCK *SubKeyBlock,
|
OUT PKEY_BLOCK *SubKeyBlock,
|
||||||
OUT BLOCK_OFFSET *BlockOffset,
|
OUT BLOCK_OFFSET *BlockOffset,
|
||||||
IN PCHAR KeyName,
|
IN PCHAR KeyName,
|
||||||
IN ACCESS_MASK DesiredAccess);
|
IN ACCESS_MASK DesiredAccess);
|
||||||
static NTSTATUS CmiAddSubKey(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiAddSubKey(IN PREGISTRY_FILE RegistryFile,
|
||||||
IN PKEY_BLOCK CurKeyBlock,
|
IN PKEY_BLOCK CurKeyBlock,
|
||||||
OUT PKEY_BLOCK *SubKeyBlock,
|
OUT PKEY_BLOCK *SubKeyBlock,
|
||||||
IN PCHAR NewSubKeyName,
|
IN PCHAR NewSubKeyName,
|
||||||
IN ULONG TitleIndex,
|
IN ULONG TitleIndex,
|
||||||
IN PWSTR Class,
|
IN PWSTR Class,
|
||||||
IN ULONG CreateOptions);
|
IN ULONG CreateOptions);
|
||||||
static NTSTATUS CmiScanKeyForValue(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiScanKeyForValue(IN PREGISTRY_FILE RegistryFile,
|
||||||
IN PKEY_BLOCK KeyBlock,
|
IN PKEY_BLOCK KeyBlock,
|
||||||
|
@ -249,7 +254,7 @@ static NTSTATUS CmiGetValueFromKeyByIndex(IN PREGISTRY_FILE RegistryFile,
|
||||||
static NTSTATUS CmiAddValueToKey(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiAddValueToKey(IN PREGISTRY_FILE RegistryFile,
|
||||||
IN PKEY_BLOCK KeyBlock,
|
IN PKEY_BLOCK KeyBlock,
|
||||||
IN PCHAR ValueNameBuf,
|
IN PCHAR ValueNameBuf,
|
||||||
IN ULONG Type,
|
IN ULONG Type,
|
||||||
IN PVOID Data,
|
IN PVOID Data,
|
||||||
IN ULONG DataSize);
|
IN ULONG DataSize);
|
||||||
static NTSTATUS CmiDeleteValueFromKey(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiDeleteValueFromKey(IN PREGISTRY_FILE RegistryFile,
|
||||||
|
@ -281,12 +286,12 @@ static NTSTATUS CmiAllocateValueBlock(IN PREGISTRY_FILE RegistryFile,
|
||||||
OUT PVALUE_BLOCK *ValueBlock,
|
OUT PVALUE_BLOCK *ValueBlock,
|
||||||
OUT BLOCK_OFFSET *VBOffset,
|
OUT BLOCK_OFFSET *VBOffset,
|
||||||
IN PCHAR ValueNameBuf,
|
IN PCHAR ValueNameBuf,
|
||||||
IN ULONG Type,
|
IN ULONG Type,
|
||||||
IN PVOID Data,
|
IN PVOID Data,
|
||||||
IN ULONG DataSize);
|
IN ULONG DataSize);
|
||||||
static NTSTATUS CmiReplaceValueData(IN PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiReplaceValueData(IN PREGISTRY_FILE RegistryFile,
|
||||||
IN PVALUE_BLOCK ValueBlock,
|
IN PVALUE_BLOCK ValueBlock,
|
||||||
IN ULONG Type,
|
IN ULONG Type,
|
||||||
IN PVOID Data,
|
IN PVOID Data,
|
||||||
IN ULONG DataSize);
|
IN ULONG DataSize);
|
||||||
static NTSTATUS CmiDestroyValueBlock(PREGISTRY_FILE RegistryFile,
|
static NTSTATUS CmiDestroyValueBlock(PREGISTRY_FILE RegistryFile,
|
||||||
|
@ -506,19 +511,25 @@ CmInitializeRegistry2(VOID)
|
||||||
/* FIXME : initialize standards symbolic links */
|
/* FIXME : initialize standards symbolic links */
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
CmShutdownRegistry(VOID)
|
||||||
|
{
|
||||||
|
DPRINT1("CmShutdownRegistry()...\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
CmImportHive(PCHAR Chunk)
|
CmImportHive(PCHAR Chunk)
|
||||||
{
|
{
|
||||||
/* FIXME: implemement this */
|
/* FIXME: implemement this */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtCreateKey (
|
NtCreateKey (
|
||||||
OUT PHANDLE KeyHandle,
|
OUT PHANDLE KeyHandle,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
IN POBJECT_ATTRIBUTES ObjectAttributes,
|
||||||
IN ULONG TitleIndex,
|
IN ULONG TitleIndex,
|
||||||
IN PUNICODE_STRING Class,
|
IN PUNICODE_STRING Class,
|
||||||
IN ULONG CreateOptions,
|
IN ULONG CreateOptions,
|
||||||
|
@ -1000,7 +1011,7 @@ CHECKPOINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtFlushKey (
|
NtFlushKey (
|
||||||
IN HANDLE KeyHandle
|
IN HANDLE KeyHandle
|
||||||
|
@ -1010,10 +1021,10 @@ NtFlushKey (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtOpenKey (
|
NtOpenKey (
|
||||||
OUT PHANDLE KeyHandle,
|
OUT PHANDLE KeyHandle,
|
||||||
IN ACCESS_MASK DesiredAccess,
|
IN ACCESS_MASK DesiredAccess,
|
||||||
IN POBJECT_ATTRIBUTES ObjectAttributes
|
IN POBJECT_ATTRIBUTES ObjectAttributes
|
||||||
)
|
)
|
||||||
|
@ -1080,10 +1091,10 @@ NtOpenKey (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtQueryKey (
|
NtQueryKey (
|
||||||
IN HANDLE KeyHandle,
|
IN HANDLE KeyHandle,
|
||||||
IN KEY_INFORMATION_CLASS KeyInformationClass,
|
IN KEY_INFORMATION_CLASS KeyInformationClass,
|
||||||
OUT PVOID KeyInformation,
|
OUT PVOID KeyInformation,
|
||||||
IN ULONG Length,
|
IN ULONG Length,
|
||||||
|
@ -1227,7 +1238,7 @@ NtQueryKey (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtQueryValueKey (
|
NtQueryValueKey (
|
||||||
IN HANDLE KeyHandle,
|
IN HANDLE KeyHandle,
|
||||||
|
@ -1384,13 +1395,13 @@ NtQueryValueKey (
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtSetValueKey (
|
NtSetValueKey (
|
||||||
IN HANDLE KeyHandle,
|
IN HANDLE KeyHandle,
|
||||||
IN PUNICODE_STRING ValueName,
|
IN PUNICODE_STRING ValueName,
|
||||||
IN ULONG TitleIndex,
|
IN ULONG TitleIndex,
|
||||||
IN ULONG Type,
|
IN ULONG Type,
|
||||||
IN PVOID Data,
|
IN PVOID Data,
|
||||||
IN ULONG DataSize
|
IN ULONG DataSize
|
||||||
)
|
)
|
||||||
|
@ -1495,7 +1506,7 @@ NtDeleteValueKey (
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtLoadKey (
|
NtLoadKey (
|
||||||
PHANDLE KeyHandle,
|
PHANDLE KeyHandle,
|
||||||
OBJECT_ATTRIBUTES ObjectAttributes
|
OBJECT_ATTRIBUTES ObjectAttributes
|
||||||
|
@ -1524,11 +1535,11 @@ STDCALL
|
||||||
NtNotifyChangeKey (
|
NtNotifyChangeKey (
|
||||||
IN HANDLE KeyHandle,
|
IN HANDLE KeyHandle,
|
||||||
IN HANDLE Event,
|
IN HANDLE Event,
|
||||||
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
|
||||||
IN PVOID ApcContext OPTIONAL,
|
IN PVOID ApcContext OPTIONAL,
|
||||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
IN ULONG CompletionFilter,
|
IN ULONG CompletionFilter,
|
||||||
IN BOOLEAN Asynchroneous,
|
IN BOOLEAN Asynchroneous,
|
||||||
OUT PVOID ChangeBuffer,
|
OUT PVOID ChangeBuffer,
|
||||||
IN ULONG Length,
|
IN ULONG Length,
|
||||||
IN BOOLEAN WatchSubtree
|
IN BOOLEAN WatchSubtree
|
||||||
|
@ -1602,7 +1613,7 @@ NtSetInformationKey (
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtUnloadKey (
|
NtUnloadKey (
|
||||||
HANDLE KeyHandle
|
HANDLE KeyHandle
|
||||||
)
|
)
|
||||||
|
@ -1612,12 +1623,13 @@ NtUnloadKey (
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
NtInitializeRegistry (
|
NtInitializeRegistry (
|
||||||
BOOLEAN SetUpBoot
|
BOOLEAN SetUpBoot
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
// UNIMPLEMENTED;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1628,7 +1640,19 @@ RtlCheckRegistryKey (
|
||||||
IN PWSTR Path
|
IN PWSTR Path
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
HANDLE KeyHandle;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlpGetRegistryHandle(RelativeTo,
|
||||||
|
Path,
|
||||||
|
FALSE,
|
||||||
|
&KeyHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
NtClose(KeyHandle);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1639,7 +1663,19 @@ RtlCreateRegistryKey (
|
||||||
IN PWSTR Path
|
IN PWSTR Path
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
HANDLE KeyHandle;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
Status = RtlpGetRegistryHandle(RelativeTo,
|
||||||
|
Path,
|
||||||
|
TRUE,
|
||||||
|
&KeyHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
NtClose(KeyHandle);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1651,7 +1687,26 @@ RtlDeleteRegistryValue (
|
||||||
IN PWSTR ValueName
|
IN PWSTR ValueName
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
HANDLE KeyHandle;
|
||||||
|
NTSTATUS Status;
|
||||||
|
UNICODE_STRING Name;
|
||||||
|
|
||||||
|
Status = RtlpGetRegistryHandle(RelativeTo,
|
||||||
|
Path,
|
||||||
|
TRUE,
|
||||||
|
&KeyHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&Name,
|
||||||
|
ValueName);
|
||||||
|
|
||||||
|
NtDeleteValueKey(KeyHandle,
|
||||||
|
&Name);
|
||||||
|
|
||||||
|
NtClose(KeyHandle);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1680,11 +1735,131 @@ RtlWriteRegistryValue (
|
||||||
IN ULONG ValueLength
|
IN ULONG ValueLength
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
HANDLE KeyHandle;
|
||||||
|
NTSTATUS Status;
|
||||||
|
UNICODE_STRING Name;
|
||||||
|
|
||||||
|
Status = RtlpGetRegistryHandle(RelativeTo,
|
||||||
|
Path,
|
||||||
|
TRUE,
|
||||||
|
&KeyHandle);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
|
||||||
|
RtlInitUnicodeString(&Name,
|
||||||
|
ValueName);
|
||||||
|
|
||||||
|
NtSetValueKey(KeyHandle,
|
||||||
|
&Name,
|
||||||
|
0,
|
||||||
|
ValueType,
|
||||||
|
ValueData,
|
||||||
|
ValueLength);
|
||||||
|
|
||||||
|
NtClose(KeyHandle);
|
||||||
|
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
NTSTATUS STDCALL
|
||||||
|
RtlFormatCurrentUserKeyPath(IN OUT PUNICODE_STRING KeyPath)
|
||||||
|
{
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ------------------------------------------ Private Implementation */
|
/* ------------------------------------------ Private Implementation */
|
||||||
|
|
||||||
|
static NTSTATUS RtlpGetRegistryHandle(ULONG RelativeTo,
|
||||||
|
PWSTR Path,
|
||||||
|
BOOLEAN Create,
|
||||||
|
PHANDLE KeyHandle)
|
||||||
|
{
|
||||||
|
UNICODE_STRING KeyName;
|
||||||
|
WCHAR KeyBuffer[MAX_PATH];
|
||||||
|
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
if (RelativeTo & RTL_REGISTRY_HANDLE)
|
||||||
|
{
|
||||||
|
*KeyHandle = (HANDLE)Path;
|
||||||
|
return STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (RelativeTo & RTL_REGISTRY_OPTIONAL)
|
||||||
|
RelativeTo &= ~RTL_REGISTRY_OPTIONAL;
|
||||||
|
|
||||||
|
if (RelativeTo >= RTL_REGISTRY_MAXIMUM)
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
KeyName.Length = 0;
|
||||||
|
KeyName.MaximumLength = MAX_PATH;
|
||||||
|
KeyName.Buffer = KeyBuffer;
|
||||||
|
KeyBuffer[0] = 0;
|
||||||
|
|
||||||
|
switch (RelativeTo)
|
||||||
|
{
|
||||||
|
case RTL_REGISTRY_SERVICES:
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RTL_REGISTRY_CONTROL:
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RTL_REGISTRY_WINDOWS_NT:
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RTL_REGISTRY_DEVICEMAP:
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
L"\\Registry\\Machine\\Hardware\\DeviceMap\\");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RTL_REGISTRY_USER:
|
||||||
|
Status = RtlFormatCurrentUserKeyPath(&KeyName);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
return Status;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Path[0] != L'\\')
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
L"\\");
|
||||||
|
|
||||||
|
RtlAppendUnicodeToString(&KeyName,
|
||||||
|
Path);
|
||||||
|
|
||||||
|
InitializeObjectAttributes(&ObjectAttributes,
|
||||||
|
&KeyName,
|
||||||
|
OBJ_CASE_INSENSITIVE,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
if (Create == TRUE)
|
||||||
|
{
|
||||||
|
Status = NtCreateKey(KeyHandle,
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&ObjectAttributes,
|
||||||
|
0,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Status = NtOpenKey(KeyHandle,
|
||||||
|
KEY_ALL_ACCESS,
|
||||||
|
&ObjectAttributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static NTSTATUS CmiObjectParse(PVOID ParsedObject,
|
static NTSTATUS CmiObjectParse(PVOID ParsedObject,
|
||||||
PVOID *NextObject,
|
PVOID *NextObject,
|
||||||
|
@ -1806,7 +1981,7 @@ static NTSTATUS CmiObjectCreate(PVOID ObjectBody,
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
CmiObjectDelete(PVOID DeletedObject)
|
CmiObjectDelete(PVOID DeletedObject)
|
||||||
{
|
{
|
||||||
PKEY_OBJECT KeyObject;
|
PKEY_OBJECT KeyObject;
|
||||||
|
|
|
@ -31,16 +31,18 @@ NTSTATUS STDCALL NtShutdownSystem(IN SHUTDOWN_ACTION Action)
|
||||||
{
|
{
|
||||||
if (Action > ShutdownPowerOff)
|
if (Action > ShutdownPowerOff)
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
IoShutdownRegisteredDevices();
|
||||||
|
CmShutdownRegistry();
|
||||||
|
IoShutdownRegisteredFileSystems();
|
||||||
PiShutdownProcessManager();
|
PiShutdownProcessManager();
|
||||||
MiShutdownMemoryManager();
|
MiShutdownMemoryManager();
|
||||||
IoShutdownIoManager();
|
|
||||||
|
|
||||||
if (Action == ShutdownNoReboot)
|
if (Action == ShutdownNoReboot)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
/* Switch off */
|
/* Switch off */
|
||||||
HalReturnToFirmware (FIRMWARE_OFF);
|
HalReturnToFirmware (FIRMWARE_OFF);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (Action == ShutdownReboot)
|
else if (Action == ShutdownReboot)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: io.h,v 1.5 2000/09/10 13:52:55 ekohl Exp $
|
/* $Id: io.h,v 1.6 2000/10/05 19:12:55 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -59,9 +59,10 @@ PIRP IoBuildSynchronousFsdRequestWithMdl(ULONG MajorFunction,
|
||||||
PLARGE_INTEGER StartingOffset,
|
PLARGE_INTEGER StartingOffset,
|
||||||
PKEVENT Event,
|
PKEVENT Event,
|
||||||
PIO_STATUS_BLOCK IoStatusBlock);
|
PIO_STATUS_BLOCK IoStatusBlock);
|
||||||
VOID IoShutdownIoManager(VOID);
|
|
||||||
VOID IoInitShutdownNotification(VOID);
|
VOID IoInitShutdownNotification(VOID);
|
||||||
VOID IoShutdownRegisteredDevices(VOID);
|
VOID IoShutdownRegisteredDevices(VOID);
|
||||||
|
VOID IoShutdownRegisteredFileSystems(VOID);
|
||||||
|
|
||||||
NTSTATUS STDCALL IoPageRead (PFILE_OBJECT FileObject,
|
NTSTATUS STDCALL IoPageRead (PFILE_OBJECT FileObject,
|
||||||
PMDL Mdl,
|
PMDL Mdl,
|
||||||
|
|
|
@ -49,6 +49,7 @@ VOID ObInit(VOID);
|
||||||
VOID PsInit(VOID);
|
VOID PsInit(VOID);
|
||||||
VOID CmInitializeRegistry(VOID);
|
VOID CmInitializeRegistry(VOID);
|
||||||
VOID CmInitializeRegistry2(VOID);
|
VOID CmInitializeRegistry2(VOID);
|
||||||
|
VOID CmShutdownRegistry(VOID);
|
||||||
VOID CmImportHive(PCHAR);
|
VOID CmImportHive(PCHAR);
|
||||||
VOID KdInitSystem(ULONG Reserved, PLOADER_PARAMETER_BLOCK LoaderBlock);
|
VOID KdInitSystem(ULONG Reserved, PLOADER_PARAMETER_BLOCK LoaderBlock);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: fs.c,v 1.13 2000/05/13 13:51:00 dwelch Exp $
|
/* $Id: fs.c,v 1.14 2000/10/05 19:15:50 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -113,6 +113,11 @@ VOID IoInitFileSystemImplementation(VOID)
|
||||||
KeInitializeSpinLock(&FileSystemListLock);
|
KeInitializeSpinLock(&FileSystemListLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID IoShutdownRegisteredFileSystems(VOID)
|
||||||
|
{
|
||||||
|
DPRINT("IoShutdownRegisteredFileSystems()\n");
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS IoAskFileSystemToMountDevice(PDEVICE_OBJECT DeviceObject,
|
NTSTATUS IoAskFileSystemToMountDevice(PDEVICE_OBJECT DeviceObject,
|
||||||
PDEVICE_OBJECT DeviceToMount)
|
PDEVICE_OBJECT DeviceToMount)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: iomgr.c,v 1.15 2000/09/10 13:54:01 ekohl Exp $
|
/* $Id: iomgr.c,v 1.16 2000/10/05 19:15:50 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -99,14 +99,6 @@ VOID IopDeleteFile(PVOID ObjectBody)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID IoShutdownIoManager(VOID)
|
|
||||||
{
|
|
||||||
/* shut down all registered devices */
|
|
||||||
IoShutdownRegisteredDevices();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID IoInit (VOID)
|
VOID IoInit (VOID)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue