/*++ 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 );