summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/dsapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/dsapi.h')
-rw-r--r--public/sdk/inc/dsapi.h403
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__