diff options
Diffstat (limited to 'public/sdk/inc/dsapi.h')
-rw-r--r-- | public/sdk/inc/dsapi.h | 403 |
1 files changed, 403 insertions, 0 deletions
diff --git a/public/sdk/inc/dsapi.h b/public/sdk/inc/dsapi.h new file mode 100644 index 000000000..c14b3dd32 --- /dev/null +++ b/public/sdk/inc/dsapi.h @@ -0,0 +1,403 @@ +//+------------------------------------------------------------------------- +// +// Microsoft Windows +// Copyright (C) Microsoft Corporation, 1992 - 1992. +// +// File: DSAPI.H +// +// Contents: DS API signatures and the like +// +// History: 7-Jun-93 ArnoldM Created +// 03-Aug-94 AlokS Rewrote to adjust to new +// calling convention/performance +// enhancements +// 08-Aug-94 AlokS Added DSConvertNameToPath() and +// DSParseDsName() APIs +//-------------------------------------------------------------------------- + +#if !defined( __DSAPI_H__ ) +#define __DSAPI_H__ + +#if !defined(_DSSYSTEM_) +# define DSEXPORT DECLSPEC_IMPORT +#else +# define DSEXPORT +#endif + +#include <dsstate.h> +//+---------------------------------------------------------------------------- +// +// Function: DSGetMachineWeight +// +// Synopsis: Returns the weight of the machine. +// +// Arguments: [pdWeight] -- The weight is returned here +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSGetMachineWeight(PDWORD pdWeight); + +//+---------------------------------------------------------------------------- +// +// Function: DSetMachineWeight +// +// Synopsis: Sets the weight of the machine. +// +// Arguments: [dWeight] -- The weight +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// DS_E_INCORRECT_CONFIGURATION if invalid weight given +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSSetMachineWeight(DWORD dWeight); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDSState +// +// Synopsis: Returns the state of the machine as far as DSYS components +// are concerned. E.g. 'standalone' or 'workstation' +// +// Arguments: [pState] -- The state is returned here +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSGetDSState(DS_MACHINE_STATE * pState); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDomainID +// +// Synopsis: Returns the domain ID of the domain in which this +// workstation or DC belongs. For standalone machines, +// the local machine ID is returned. +// +// Arguments: [pgGuid] -- The guid is returned here +// +// Returns: DS_E_KEY_NOT_FOUND, when Domain ID is not present +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSGetDomainID(GUID * pgGuid); + + +//+---------------------------------------------------------------------------- +// +// Function: DSGetMachineID +// +// Synopsis: Returns the local machine ID +// +// Arguments: [pgGuid] -- The guid is returned here +// +// Returns: DS_E_KEY_NOT_FOUND, when machine ID is not set +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSGetMachineID(GUID * pgGuid); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetSiteID +// +// Synopsis: Returns the local site in which this workstation or DC +// belongs. This call will return an error for standalone. +// +// Arguments: [pgGuid] -- The guid is returned here +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSGetSiteID(GUID * pgGuid); + + +//+---------------------------------------------------------------------------- +// +// Function: DSGetTimeSyncState +// +// Synopsis: Get the time sync state. +// +// Each machine, including the DC, can be in one of the two +// Time Sync States as shown below: +// Time Sync Type Time Sync State Value +// --------------- ---------------------- +// A. Machine is reliable TRUE +// source of time +// +// B. Machine time is NOT FALSE +// reliable source of time +// +// +// Arguments: [pfState] -- TRUE/FALSE return in this +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- + +DSEXPORT STDAPI DSGetTimeSyncState ( BOOL *pfState); + +//+---------------------------------------------------------------------------- +// +// Function: DSSetTimeSyncState +// +// Synopsis: Set the time sync state. +// +// Each machine, including the DC, can be in one of the two +// Time Sync States as shown below: +// Time Sync Type Time Sync State Value +// --------------- ---------------------- +// A. Machine is reliable TRUE +// source of time +// +// B. Machine time is NOT FALSE +// reliable source of time +// +// +// Arguments: [fState] -- The state to be set. +// +// Returns: DS_E_KEY_NOT_FOUND, on error +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSSetTimeSyncState ( BOOL fState); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetLocalDsRoot +// +// Synopsis: Returns a drive based path to the local DS container +// +// Arguments: [pwszRoot] -- A path is return here. +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszRoot. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetLocalDsRoot(LPWSTR pwszRoot, LPDWORD lpdwBufSize); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDomainDsRoot +// +// Synopsis: Returns a drive based path to the domain DS container on DC. +// Not valid on non-DC Cairo setup configurations +// +// Arguments: [pwszRoot] -- A path is return here. +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszRoot. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetDomainDsRoot (LPWSTR pwszRoot, LPDWORD lpdwBufSize); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDomainName +// +// Synopsis: Returns the domain name in all configurations. +// Thus, on workstation, it might return "\wpg\sys.." whereas +// in standalone, it will return "<computer name>" +// +// Arguments: [pwszName] -- The Domain Name is return here. +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetDomainName (LPWSTR pwszName, LPDWORD lpdwBufSize); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDownlevelDomainName +// +// Synopsis: Returns the downlevel domain name in all configurations. +// Thus, on workstation, it might return "redmond" whereas +// in standalone, it will return the workgroup name +// +// Arguments: [pwszName] -- The Domain Name is return here. +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetDownlevelDomainName (LPWSTR pwszName, LPDWORD lpdwBufSize); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetDownlevelDomainSid +// +// Synopsis: Returns the downlevel domain name in all configurations. +// The sid is only valid on standalone installations, though. +// +// Arguments: [ppDomainSid] -- The Domain Sid is return here, allocated +// with CoTaskMemAlloc +// +// Returns: E_OUTOFMEMORY - not enough memory to retrieve the SID +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetDownlevelDomainSid (PSID * ppDomainSid); + +//+---------------------------------------------------------------------------- +// +// Function: DSSetDownlevelDomainSid +// +// Synopsis: Sets the downlevel domain sid in all configurations. +// This sid will only be valid on standalone installations, +// in which case it indicates that the machine is a member +// of an NT domain. +// +// Arguments: [pDomainSid] -- The Domain Sid is return here. If this is +// NULL the API deletes the downlevel domain +// SID value. +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_KEY_NOT_FOUND, on other errors +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSSetDownlevelDomainSid (PSID pDomainSid); + +//+---------------------------------------------------------------------------- +// +// Function: DSGetMachineName +// +// Synopsis: Returns the Distinguished Name(DN) of the machine. +// Thus, on workstation, it might return +// "\wpg\sys..\aloksdev" whereas on standalone, +// it will return "<computer name>" +// +// Arguments: [pwszName] -- The Machine Name is return here. +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszName'. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// DS_E_KEY_NOT_FOUND, when the machine name is not present +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSGetMachineName (LPWSTR pwszName, LPDWORD lpdwBufSize); + +//+---------------------------------------------------------------------------- +// +// Function: DSConvertNameToPath +// +// Synopsis: Converts a DS name to a path so that any WIN32 API +// can be used on it. +// +// Arguments: [pwszName] -- A principal name e.g. \wpg\sys\cairo or +// aloksdev\aloks +// [pwszPath] -- A WIN32 path will returned here which +// can of form <drive letter>:<path> or +// <UNC name>\<path> +// [lpdwBufSize] -- Size of the buffer pointed to by 'pwszPath'. +// If size is not large enough, correct size +// is returned via this parameter +// +// Returns: DS_E_BUFFER_TOO_SMALL, if supplied buffer is not large enough +// DS_E_INVALID_PARAMETER, when passed parameters are incorrect +// DS_E_NOT_LOCAL_NAME, when the name can't be parsed based on local DS +// information +// S_OK - if successful. +// +// Note: The API will need to be fixed when NT/Cairo inter-op +// works and we can potentially be given a string of form +// "Redmond\aloks". +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSConvertNameToPath ( IN LPCWSTR pwszName, + OUT LPWSTR pwszPath, + IN OUT LPDWORD lpdwBufSize + ); + +//+---------------------------------------------------------------------------- +// +// Function: DSParseDsName +// +// Synopsis: Cracks a DS name into a Domain and domain-relative +// name. +// +// Arguments: [pwszName] -- A principal name +// e.g. \wpg\sys\cairo\dev\aloks or +// aloksdev\aloks +// [lpdwDomNameLen]-- This contains the length of the domain +// name. +// (a) a count of characters not bytes is returned, and +// (b) excludes the backslash which separates the +// domain part from the domain-relative path. +// +// Returns: DS_E_INVALID_PARAMETER, when passed parameters are incorrect, +// DS_E_NOT_LOCAL_NAME, when the name can't be parsed based on local DS +// information +// S_OK - if successful. +// +//----------------------------------------------------------------------------- +DSEXPORT STDAPI DSParseDsName ( IN LPCWSTR pwszName, + IN OUT LPDWORD lpdwDomNameLen + ); + +//+---------------------------------------------------------------------------- +// +// Function: DSReconcileUser, private +// +// Synopsis: Reconcile the local replica's of user object(s) with +// those on the DC. This is not valid for standalone. +// Note: Only primary users have local replica's on a given +// workstation. For non-primary user's the function +// call is a noop and returns S_OK. +// +// Arguments: [pwszDomainName] -- The full domain name (including OU name) +// of the user. e.g. '\wpg\sys\cairo\dev' +// [pwszUserName] -- The user name relative to the OU +// e.g. 'aloks' +// +// Returns: +// S_OK - if successful. +// +// Note: Nobody should need to call this except for WinLogon +//----------------------------------------------------------------------------- +DSEXPORT STDAPI + DSReconcileUser (LPCWSTR pwszDomainName,LPCWSTR pwszUserName); +#endif // __DSAPI_H__ |