/*++ Copyright (c) 1997 Microsoft Corporation Module Name: clusres.h Abstract: Common Resource DLL Header Author: John Vert (jvert) 12/15/1996 Revision History: --*/ #include "nt.h" #include "ntrtl.h" #include "nturtl.h" #include "windows.h" #include "stdio.h" #include "stdlib.h" #include "clusudef.h" #include "clusapi.h" #include "resapi.h" #include "clusvmsg.h" #define LOCAL_SERVICES L"System\\CurrentControlSet\\Services" extern PLOG_EVENT_ROUTINE ClusResLogEvent; extern PSET_RESOURCE_STATUS_ROUTINE ClusResSetResourceStatus; // // Cluster Resource Specific routines // DWORD ClusResOpenDriver( HANDLE *Handle, LPWSTR DriverName ); NTSTATUS ClusResDoIoctl( HANDLE Handle, DWORD IoctlCode, PVOID Request, DWORD RequestSize, PVOID Response, PDWORD ResponseSize ); // // Helpful macros for logging cluster service events // VOID ClusResLogEventWithName0( IN HKEY hResourceKey, IN DWORD LogLevel, IN DWORD LogModule, IN LPSTR FileName, IN DWORD LineNumber, IN DWORD MessageId, IN DWORD dwByteCount, IN PVOID lpBytes ); VOID ClusResLogEventWithName1( IN HKEY hResourceKey, IN DWORD LogLevel, IN DWORD LogModule, IN LPSTR FileName, IN DWORD LineNumber, IN DWORD MessageId, IN DWORD dwByteCount, IN PVOID lpBytes, IN LPCWSTR Arg1 ); #define ClusResLogEventByKey(_hKey_, _level_, _msgid_) \ ClusResLogEventWithName0(_hKey_, \ _level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ _msgid_, \ 0, \ NULL) #define ClusResLogEventByKey1(_hKey_, _level_, _msgid_, _arg1_) \ ClusResLogEventWithName1(_hKey_, \ _level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ _msgid_, \ 0, \ NULL, \ _arg1_) #define ClusResLogEventByKeyData(_hKey_, _level_, _msgid_, dwBytes, pData) \ ClusResLogEventWithName0(_hKey_, \ _level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ _msgid_, \ 0, \ NULL) #define ClusResLogEvent(_level_, _msgid_) \ ClusterLogEvent0(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ 0, \ NULL) #define ClusResLogEvent1(_level_, _msgid_, _arg1_) \ ClusterLogEvent1(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ 0, \ NULL, \ (_arg1_)) #define ClusResLogEvent2(_level_, _msgid_, _arg1_, _arg2_) \ ClusterLogEvent2(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ 0, \ NULL, \ (_arg1_), \ (_arg2_)) #define ClusResLogEvent3(_level_, _msgid_, _arg1_, _arg2_, _arg3_) \ ClusterLogEvent3(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ 0, \ NULL, \ (_arg1_), \ (_arg2_), \ (_arg3_)) #define ClusResLogEventData(_level_, _msgid_, _dwBytes_, _pData_) \ ClusterLogEvent0(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ (_dwBytes_), \ (_pData_)) #define ClusResLogEventData1(_level_, _msgid_, _dwBytes_, _pData_, _arg1_) \ ClusterLogEvent1(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ (_dwBytes_), \ (_pData_), \ (_arg1_)) #define ClusResLogEventData2(_level_, _msgid_, _dwBytes_, _pData_, _arg1_, _arg2_) \ ClusterLogEvent2(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ (_dwBytes_), \ (_pData_), \ (_arg1_), \ (_arg2_)) #define ClusResLogEventData3(_level_, _msgid_, _dwBytes_, _pData_, _arg1_, _arg2_, _arg3_) \ ClusterLogEvent3(_level_, \ LOG_CURRENT_MODULE, \ __FILE__, \ __LINE__, \ (_msgid_), \ (_dwBytes_), \ (_pData_), \ (_arg1_), \ (_arg2_), \ (_arg3_)) // // Define interfaces exposed by each specified resource DLL and // referenced by the common CLUSRES wrapper. // #define LOG_MODULE_GENAPP 0x801 #define LOG_MODULE_GENSVC 0x802 #define LOG_MODULE_FTSET 0x803 #define LOG_MODULE_DISK 0x804 #define LOG_MODULE_NETNAME 0x805 #define LOG_MODULE_IPADDR 0x806 #define LOG_MODULE_SMB 0x807 #define LOG_MODULE_TIME 0x808 #define LOG_MODULE_SPOOL 0x809 #define LOG_MODULE_LKQRM 0x80A #define LOG_MODULE_DHCP 0x80B #define LOG_MODULE_MSMQ 0x80C #define LOG_MODULE_MSDTC 0x80D // // interfaces for GENAPP // extern CLRES_FUNCTION_TABLE GenAppFunctionTable; BOOLEAN WINAPI GenAppDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for GENSVC // extern CLRES_FUNCTION_TABLE GenSvcFunctionTable; BOOLEAN WINAPI GenSvcDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for DISKS and FTSET // extern CLRES_FUNCTION_TABLE DisksFunctionTable; extern CLRES_FUNCTION_TABLE FtSetFunctionTable; BOOLEAN WINAPI DisksDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); BOOLEAN WINAPI FtSetDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for NETNAME // extern CLRES_FUNCTION_TABLE NetNameFunctionTable; BOOLEAN WINAPI NetNameDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for IPADDR // extern CLRES_FUNCTION_TABLE IpAddrFunctionTable; BOOLEAN WINAPI IpAddrDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for File Shares // extern CLRES_FUNCTION_TABLE SmbShareFunctionTable; BOOLEAN WINAPI SmbShareDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for Spool Service // extern CLRES_FUNCTION_TABLE SplSvcFunctionTable; BOOLEAN WINAPI SplSvcDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for Local Quorum // extern CLRES_FUNCTION_TABLE LkQuorumFunctionTable; BOOLEAN WINAPI LkQuorumDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for DHCP Server // extern CLRES_FUNCTION_TABLE DhcpFunctionTable; BOOLEAN WINAPI DhcpDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for DHCP Server // extern CLRES_FUNCTION_TABLE MsMQFunctionTable; BOOLEAN WINAPI MsMQDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for DHCP Server // extern CLRES_FUNCTION_TABLE MsDTCFunctionTable; BOOLEAN WINAPI MsDTCDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved ); // // interfaces for DHCP Server // extern CLRES_FUNCTION_TABLE TimeSvcFunctionTable; BOOLEAN WINAPI TimeSvcDllEntryPoint( IN HINSTANCE DllHandle, IN DWORD Reason, IN LPVOID Reserved );