/*++ Copyright (c) 1999-2000 Microsoft Corporation Module Name: RemoteDesktopUtils Abstract: Misc. RD Utils Author: Tad Brockway 02/00 Revision History: --*/ #ifndef __REMOTEDESKTOPUTILS_H__ #define __REMOTEDESKTOPUTILS_H__ #include // // Version stamp for first supported connect parm, Whistler // beta 1 does not have this version stamp. // #define SALEM_FIRST_VALID_CONNECTPARM_VERSION 0x00010001 // // Changes to Salem connect parm. // // Changes Start Compatible with previous build // ---------------------------------- -------------------- ------------------------------ // Add version stamp as first field Whister Beta 2 No // Remove helpassistant from connect parm Build 2406 No // Add security blob as protocol specfic Build 2476+ Yes // parameter // // // // Version that does not have security blob as protocol specific // parameters (last field in our connect parm). // #define SALEM_CONNECTPARM_NOSECURITYBLOB_VERSION 0x00010001 // // Starting version having security blob as protocol specific // parameters (last field in our connect parm). // #define SALEM_CONNECTPARM_SECURITYBLOB_VERSION 0x00010002 // // // Current version stamp for Salem connect parm. // #define SALEM_CURRENT_CONNECTPARM_VERSION SALEM_CONNECTPARM_SECURITYBLOB_VERSION #define SALEM_CONNECTPARM_UNUSEFILED_SUBSTITUTE _TEXT("*") // // Compare two BSTR's. // struct CompareBSTR { bool operator()(BSTR str1, BSTR str2) const { if ((str1 == NULL) || (str2 == NULL)) { return false; } return (wcscmp(str1, str2) < 0); } }; struct BSTREqual { bool operator()(BSTR str1, BSTR str2) const { if ((str1 == NULL) || (str2 == NULL)) { return false; } int minLen = SysStringByteLen(str1) < SysStringByteLen(str2) ? SysStringByteLen(str1) : SysStringByteLen(str2); return (memcmp(str1, str2, minLen) == 0); } }; // // Create a connect parms string. // BSTR CreateConnectParmsString( IN DWORD protocolType, IN CComBSTR &machineAddressList, IN CComBSTR &assistantAccount, IN CComBSTR &assistantAccountPwd, IN CComBSTR &helpSessionId, IN CComBSTR &helpSessionName, IN CComBSTR &helpSessionPwd, IN CComBSTR &protocolSpecificParms ); // // Parse a connect string created by a call to CreateConnectParmsString. // DWORD ParseConnectParmsString( IN BSTR parmsString, OUT DWORD* pdwVersion, OUT DWORD *protocolType, OUT CComBSTR &machineAddressList, OUT CComBSTR &assistantAccount, OUT CComBSTR &assistantAccountPwd, OUT CComBSTR &helpSessionId, OUT CComBSTR &helpSessionName, OUT CComBSTR &helpSessionPwd, OUT CComBSTR &protocolSpecificParms ); // // Realloc a BSTR // BSTR ReallocBSTR( IN BSTR origStr, IN DWORD requiredByteLen ); int GetClientmachineAddressList( OUT CComBSTR& clientmachineAddressList ); DWORD ParseHelpAccountName( IN BSTR helpAccount, OUT CComBSTR& machineAddressList, OUT CComBSTR& AccountName ); // // Create a SYSTEM SID. // DWORD CreateSystemSid( PSID *ppSystemSid ); // // Returns whether the current thread is running under SYSTEM security. // BOOL IsCallerSystem(PSID pSystemSid); // // Routine to attach debugger is asked. // void AttachDebuggerIfAsked(HINSTANCE hInst); DWORD HashSecurityData( IN PBYTE const pbData, IN DWORD cbData, OUT CComBSTR& bstrHashedKey ); #endif