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