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