windows-nt/Source/XPSP1/NT/termsrv/remdsk/common/remotedesktoputils.h
2020-09-26 16:20:57 +08:00

172 lines
3.5 KiB
C

/*++
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 <atlbase.h>
//
// 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