windows-nt/Source/XPSP1/NT/ds/security/dsrole/server/loadfn.h
2020-09-26 16:20:57 +08:00

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