109 lines
2 KiB
C
109 lines
2 KiB
C
/*++
|
|
|
|
Copyright (c) 1992 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Spupgcfg.h
|
|
|
|
Abstract:
|
|
|
|
Configuration routines for the upgrade case
|
|
|
|
Author:
|
|
|
|
Sunil Pai (sunilp) 18-Nov-1993
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
//
|
|
// data types
|
|
//
|
|
typedef struct {
|
|
PWSTR SectionName;
|
|
DWORD SectionFlags;
|
|
DWORD VerLow;
|
|
DWORD VerHigh;
|
|
} RootDevnodeSectionNamesType;
|
|
|
|
#define RootDevnodeSectionNamesType_NTUPG (0x0001)
|
|
#define RootDevnodeSectionNamesType_W9xUPG (0x0002)
|
|
#define RootDevnodeSectionNamesType_CLEAN (0x0004)
|
|
#define RootDevnodeSectionNamesType_ALL (0x0007)
|
|
|
|
|
|
//
|
|
// Public routines
|
|
//
|
|
NTSTATUS
|
|
SpUpgradeNTRegistry(
|
|
IN PVOID SifHandle,
|
|
IN HANDLE *HiveRootKeys,
|
|
IN LPCWSTR SetupSourceDevicePath,
|
|
IN LPCWSTR DirectoryOnSourceDevice,
|
|
IN HANDLE hKeyCCSet
|
|
);
|
|
|
|
BOOLEAN
|
|
SpHivesFromInfs(
|
|
IN PVOID SifHandle,
|
|
IN LPCWSTR SectionName,
|
|
IN LPCWSTR SourcePath1,
|
|
IN LPCWSTR SourcePath2, OPTIONAL
|
|
IN HANDLE SystemHiveRoot,
|
|
IN HANDLE SoftwareHiveRoot,
|
|
IN HANDLE DefaultUserHiveRoot,
|
|
IN HANDLE HKR
|
|
);
|
|
|
|
VOID
|
|
SpDeleteRootDevnodeKeys(
|
|
IN PVOID SifHandle,
|
|
IN HANDLE hKeyCCSet,
|
|
IN PWSTR DevicesToDelete,
|
|
IN RootDevnodeSectionNamesType *DeviceClassesToDelete
|
|
);
|
|
|
|
//
|
|
// Private routines
|
|
//
|
|
NTSTATUS
|
|
SppDeleteKeyRecursive(
|
|
HANDLE hKeyRoot,
|
|
PWSTR Key,
|
|
BOOLEAN ThisKeyToo
|
|
);
|
|
|
|
NTSTATUS
|
|
SppCopyKeyRecursive(
|
|
HANDLE hKeyRootSrc,
|
|
HANDLE hKeyRootDst,
|
|
PWSTR SrcKeyPath,
|
|
PWSTR DstKeyPath,
|
|
BOOLEAN CopyAlways,
|
|
BOOLEAN ApplyACLsAlways
|
|
);
|
|
|
|
|
|
//
|
|
// Callback routine for SpApplyFunctionToDeviceInstanceKeys
|
|
//
|
|
typedef VOID (*PSPP_INSTANCEKEY_CALLBACK_ROUTINE) (
|
|
IN HANDLE SetupInstanceKeyHandle,
|
|
IN HANDLE UpgradeInstanceKeyHandle,
|
|
IN BOOLEAN RootEnumerated,
|
|
IN OUT PVOID Context
|
|
);
|
|
|
|
VOID
|
|
SpApplyFunctionToDeviceInstanceKeys(
|
|
IN HANDLE hKeyCCSet,
|
|
IN PSPP_INSTANCEKEY_CALLBACK_ROUTINE InstanceKeyCallbackRoutine,
|
|
IN OUT PVOID Context
|
|
);
|
|
|