/*++ Copyright (c) 1996 Microsoft Corporation Module Name: clusspl.c Abstract: Cluster code support. Author: Albert Ting (AlbertT) 6-Oct-96 Revision History: --*/ #ifndef _CLUSTER_H #define _CLUSTER_H #ifdef __cplusplus extern "C" { #endif typedef struct _CLUSTER { DWORD signature; HANDLE hSpooler; } CLUSTER, *PCLUSTER; #define CLS_SIGNATURE 0x636c73 // CLS BOOL ShutdownSpooler( HANDLE hSpooler ); VOID ShutdownMonitors( PINISPOOLER pIniSpooler ); BOOL InitializeShared( PINISPOOLER pIniSpooler ); VOID DeleteShared( PINISPOOLER pIniSpooler ); /******************************************************************** Cluster registry access. ********************************************************************/ HKEY OpenClusterParameterKey( IN LPCTSTR pszResource ); LONG SplRegCreateKey( IN HKEY hKey, IN LPCTSTR pszSubKey, IN DWORD dwOptions, IN REGSAM samDesired, IN PSECURITY_ATTRIBUTES pSecurityAttirbutes, OUT PHKEY phkResult, OUT PDWORD pdwDisposition, IN PINISPOOLER pIniSpooler ); LONG SplRegOpenKey( IN HKEY hKey, IN LPCTSTR pszSubKey, IN REGSAM samDesired, OUT PHKEY phkResult, IN PINISPOOLER pIniSpooler ); LONG SplRegCloseKey( IN HKEY hKey, IN PINISPOOLER pIniSpooler ); LONG SplRegDeleteKey( IN HKEY hKey, IN LPCTSTR pszSubKey, IN PINISPOOLER pIniSpooler ); LONG SplRegEnumKey( IN HKEY hKey, IN DWORD dwIndex, OUT LPTSTR pszName, IN OUT PDWORD pcchName, OUT PFILETIME pftLastWriteTime, IN PINISPOOLER pIniSpooler ); LONG SplRegQueryInfoKey( HKEY hKey, PDWORD pcSubKeys, OPTIONAL PDWORD pcbKey, OPTIONAL PDWORD pcValues, OPTIONAL PDWORD pcbValue, OPTIONAL PDWORD pcbData, OPTIONAL PDWORD pcbSecurityDescriptor, OPTIONAL PFILETIME pftLastWriteTime, OPTIONAL PINISPOOLER pIniSpooler ); LONG SplRegSetValue( IN HKEY hKey, IN LPCTSTR pszValue, IN DWORD dwType, IN const BYTE* pData, IN DWORD cbData, IN PINISPOOLER pIniSpooler ); LONG SplRegDeleteValue( IN HKEY hKey, IN LPCTSTR pszValue, IN PINISPOOLER pIniSpooler ); LONG SplRegEnumValue( IN HKEY hKey, IN DWORD dwIndex, OUT LPTSTR pszValue, IN OUT PDWORD pcbValue, OUT PDWORD pType, OPTIONAL OUT PBYTE pData, IN OUT PDWORD pcbData, IN PINISPOOLER pIniSpooler ); LONG SplRegQueryValue( IN HKEY hKey, IN LPCTSTR pszValue, OUT PDWORD pType, OPTIONAL OUT PBYTE pData, IN OUT PDWORD pcbData, IN PINISPOOLER pIniSpooler ); /******************************************************************** Misc changes ********************************************************************/ VOID BuildOtherNamesFromSpoolerInfo2( PSPOOLER_INFO_2 pSpoolerInfo2, PINISPOOLER pIniSpooler ); LPTSTR pszGetPrinterName( PINIPRINTER pIniPrinter, BOOL bFull, LPCTSTR pszToken OPTIONAL ); BOOL CreateDlName( IN LPCWSTR pszName, IN PINIMONITOR pIniMonitor, OUT LPCWSTR pszNameNew ); PINIMONITOR InitializeDMonitor( PINIMONITOR pIniMonitor, LPWSTR pszRegistryRoot ); VOID InitializeUMonitor( PINIMONITOR pIniMonitor ); // // Clustering support. // BOOL SplClusterSplOpen( LPCTSTR pszServer, LPCTSTR pszResource, PHANDLE phSpooler, LPCTSTR pszName, LPCTSTR pszAddress ); BOOL SplClusterSplClose( HANDLE hSpooler ); BOOL SplClusterSplIsAlive( HANDLE hSpooler ); DWORD ClusterGetResourceDriveLetter( IN LPCWSTR pszResource, OUT LPWSTR *ppszClusResDriveLetter ); DWORD ClusterGetResourceID( IN LPCWSTR pszResource, OUT LPWSTR *ppszClusResID ); #ifdef __cplusplus } #endif #endif // ifdef _CLUSTER_H