267 lines
8.1 KiB
C
267 lines
8.1 KiB
C
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
loadfn.h
|
|
|
|
Abstract:
|
|
|
|
Definitions and globals for dynamically loading the required functions from
|
|
the setup dlls
|
|
|
|
Author:
|
|
|
|
Mac McLain (MacM) June 11, 1997
|
|
|
|
Environment:
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef __LOADFN_H__
|
|
#define __LOADFN_H__
|
|
|
|
//
|
|
// All global variables declared as EXTERN will be allocated in the file
|
|
// that defines NTDSSET_ALLOCATE
|
|
//
|
|
#ifdef EXTERN
|
|
#undef EXTERN
|
|
#endif
|
|
|
|
#ifdef NTDSSET_ALLOCATE
|
|
#define EXTERN
|
|
#else
|
|
#define EXTERN extern
|
|
#endif
|
|
|
|
|
|
#include <scesetup.h>
|
|
|
|
typedef DWORD ( *DSR_NtdsInstall )(
|
|
IN PNTDS_INSTALL_INFO InstallInfo,
|
|
OUT LPWSTR *InstalledSiteName, OPTIONAL
|
|
OUT GUID *NewDnsDomainGuid, OPTIONAL
|
|
OUT PSID *NewDnsDomainSid OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsInstallShutdown )(
|
|
VOID
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsInstallUndo )(
|
|
VOID
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsGetDefaultDnsName )(
|
|
OUT OPTIONAL WCHAR *DnsName,
|
|
IN OUT ULONG *DnsNameLength
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsSetReplicaMachineAccount )(
|
|
IN SEC_WINNT_AUTH_IDENTITY *Credentials,
|
|
IN HANDLE ClientToken,
|
|
IN LPWSTR DcName,
|
|
IN LPWSTR AccountName,
|
|
IN ULONG AccountFlags,
|
|
IN OUT WCHAR** AccountDn OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsPrepareForDemotion ) (
|
|
IN ULONG Flags,
|
|
IN LPWSTR ServerName,
|
|
IN SEC_WINNT_AUTH_IDENTITY *Credentials, OPTIONAL
|
|
IN CALLBACK_STATUS_TYPE pfnStatusCallBack, OPTIONAL
|
|
IN CALLBACK_ERROR_TYPE pfnErrorStatus, OPTIONAL
|
|
IN HANDLE ClientToken, OPTIONAL
|
|
OUT PNTDS_DNS_RR_INFO *pDnsRRInfo
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsPrepareForDemotionUndo ) (
|
|
VOID
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsDemote ) (
|
|
IN PSEC_WINNT_AUTH_IDENTITY Credentials, OPTIONAL
|
|
IN LPWSTR AdminPassword, OPTIONAL
|
|
IN DWORD Flags,
|
|
IN LPWSTR ServerName,
|
|
IN HANDLE ClientToken,
|
|
IN CALLBACK_STATUS_TYPE pfnStatusCallBack, OPTIONAL
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsInstallCancel ) (
|
|
VOID
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsInstallReplicateFull ) (
|
|
IN CALLBACK_STATUS_TYPE pfnStatusCallBack,
|
|
IN HANDLE ClientToken,
|
|
IN ULONG ulRepOptions
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtdsFreeDnsRRInfo ) (
|
|
IN PNTDS_DNS_RR_INFO pDnsRRInfo
|
|
);
|
|
//
|
|
// Security editor prototypes
|
|
//
|
|
typedef DWORD ( WINAPI *DSR_SceDcPromoteSecurityEx ) (
|
|
IN HANDLE ClientToken,
|
|
IN ULONG Options,
|
|
IN CALLBACK_STATUS_TYPE pfnStatusCallBack
|
|
);
|
|
|
|
typedef DWORD ( WINAPI *DSR_SceDcPromoCreateGPOsInSysvolEx ) (
|
|
IN HANDLE ClientToken,
|
|
IN LPWSTR Domain,
|
|
IN LPWSTR SysvolRoot,
|
|
IN ULONG Options,
|
|
IN CALLBACK_STATUS_TYPE pfnStatusCallBack
|
|
);
|
|
|
|
typedef DWORD ( WINAPI *DSR_SceSetupSystemByInfName ) (
|
|
IN PWSTR InfFullName,
|
|
IN PCWSTR LogFileName OPTIONAL,
|
|
IN AREA_INFORMATION Area,
|
|
IN UINT nFlag,
|
|
IN PSCE_NOTIFICATION_CALLBACK_ROUTINE pSceNotificationCallBack OPTIONAL,
|
|
IN OUT PVOID pValue OPTIONAL
|
|
);
|
|
|
|
//
|
|
// NTFRS initialization prototypes
|
|
//
|
|
typedef DWORD ( *DSR_NtFrsApi_PrepareForPromotionW ) (
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_PrepareForDemotionW ) (
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_PrepareForDemotionUsingCredW ) (
|
|
IN SEC_WINNT_AUTH_IDENTITY *Credentials, OPTIONAL
|
|
IN HANDLE ClientToken,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_StartPromotionW ) (
|
|
IN PWCHAR ParentComputer, OPTIONAL
|
|
IN PWCHAR ParentAccount, OPTIONAL
|
|
IN PWCHAR ParentPassword, OPTIONAL
|
|
IN DWORD DisplayCallBack(IN PWCHAR Display), OPTIONAL
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack, OPTIONAL
|
|
IN PWCHAR ReplicaSetName,
|
|
IN PWCHAR ReplicaSetType,
|
|
IN DWORD ReplicaSetPrimary,
|
|
IN PWCHAR ReplicaSetStage,
|
|
IN PWCHAR ReplicaSetRoot
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_StartDemotionW ) (
|
|
IN PWCHAR ReplicaSetName,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_WaitForPromotionW ) (
|
|
IN DWORD TimeoutInMilliSeconds,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_WaitForDemotionW ) (
|
|
IN DWORD TimeoutInMilliSeconds,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_CommitPromotionW ) (
|
|
IN DWORD TimeoutInMilliSeconds,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_CommitDemotionW ) (
|
|
IN DWORD TimeoutInMilliSeconds,
|
|
IN CALLBACK_ERROR_TYPE pfnErrorCallBack OPTIONAL
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_AbortPromotionW ) (
|
|
VOID
|
|
);
|
|
|
|
typedef DWORD ( *DSR_NtFrsApi_AbortDemotionW ) (
|
|
VOID
|
|
);
|
|
|
|
#ifndef W32TIME_PROMOTE
|
|
|
|
//
|
|
// w32time doesn't currently have any exported headers.
|
|
//
|
|
#define W32TIME_PROMOTE 0x1
|
|
#define W32TIME_DEMOTE 0x2
|
|
#define W32TIME_PROMOTE_FIRST_DC_IN_TREE 0x4
|
|
|
|
#endif
|
|
|
|
typedef VOID ( *DSR_W32TimeDcPromo ) (
|
|
DWORD dwFlags
|
|
);
|
|
|
|
EXTERN DSR_NtdsInstall DsrNtdsInstall;
|
|
EXTERN DSR_NtdsInstallShutdown DsrNtdsInstallShutdown;
|
|
EXTERN DSR_NtdsInstallUndo DsrNtdsInstallUndo;
|
|
EXTERN DSR_NtdsGetDefaultDnsName DsrNtdsGetDefaultDnsName;
|
|
EXTERN DSR_NtdsSetReplicaMachineAccount DsrNtdsSetReplicaMachineAccount;
|
|
EXTERN DSR_NtdsPrepareForDemotion DsrNtdsPrepareForDemotion;
|
|
EXTERN DSR_NtdsPrepareForDemotionUndo DsrNtdsPrepareForDemotionUndo;
|
|
EXTERN DSR_NtdsDemote DsrNtdsDemote;
|
|
EXTERN DSR_NtdsInstallCancel DsrNtdsInstallCancel;
|
|
EXTERN DSR_NtdsInstallReplicateFull DsrNtdsInstallReplicateFull;
|
|
EXTERN DSR_NtdsFreeDnsRRInfo DsrNtdsFreeDnsRRInfo;
|
|
EXTERN DSR_SceDcPromoteSecurityEx DsrSceDcPromoteSecurityEx;
|
|
EXTERN DSR_SceDcPromoCreateGPOsInSysvolEx DsrSceDcPromoCreateGPOsInSysvolEx;
|
|
EXTERN DSR_SceSetupSystemByInfName DsrSceSetupSystemByInfName;
|
|
EXTERN DSR_NtFrsApi_PrepareForPromotionW DsrNtFrsApi_PrepareForPromotionW;
|
|
EXTERN DSR_NtFrsApi_PrepareForDemotionW DsrNtFrsApi_PrepareForDemotionW;
|
|
EXTERN DSR_NtFrsApi_PrepareForDemotionUsingCredW DsrNtFrsApi_PrepareForDemotionUsingCredW;
|
|
EXTERN DSR_NtFrsApi_StartPromotionW DsrNtFrsApi_StartPromotionW;
|
|
EXTERN DSR_NtFrsApi_StartDemotionW DsrNtFrsApi_StartDemotionW;
|
|
EXTERN DSR_NtFrsApi_WaitForPromotionW DsrNtFrsApi_WaitForPromotionW;
|
|
EXTERN DSR_NtFrsApi_WaitForDemotionW DsrNtFrsApi_WaitForDemotionW;
|
|
EXTERN DSR_NtFrsApi_CommitPromotionW DsrNtFrsApi_CommitPromotionW;
|
|
EXTERN DSR_NtFrsApi_CommitDemotionW DsrNtFrsApi_CommitDemotionW;
|
|
EXTERN DSR_NtFrsApi_AbortPromotionW DsrNtFrsApi_AbortPromotionW;
|
|
EXTERN DSR_NtFrsApi_AbortDemotionW DsrNtFrsApi_AbortDemotionW;
|
|
EXTERN DSR_W32TimeDcPromo DsrW32TimeDcPromo;
|
|
|
|
DWORD
|
|
DsRolepLoadSetupFunctions(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
DsRolepUnloadSetupFunctions(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
DsRolepInitSetupFunctions(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// N.B. If this assert fires, then the operation handle lock
|
|
// has been misused.
|
|
//
|
|
#define DSROLE_GET_SETUP_FUNC( status, pfunc ) \
|
|
if ( pfunc == NULL ) { \
|
|
ASSERT( pfunc ); \
|
|
status = DsRolepLoadSetupFunctions(); \
|
|
}
|
|
|
|
|
|
#endif
|