You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.1 KiB
152 lines
4.1 KiB
/*******************************************************************************
|
|
*
|
|
* rdpcfgex.c
|
|
*
|
|
* WinCfg extension DLL
|
|
*
|
|
* Copyright (c) 1997, Microsoft Corporation
|
|
* All rights reserved.
|
|
*
|
|
*******************************************************************************/
|
|
|
|
#include <windows.h>
|
|
#include <tscfgex.h>
|
|
#include "rdpcfgex.h"
|
|
#include <ntverp.h>
|
|
|
|
//
|
|
// This global variable is returned to TSCFG and is used to populate the
|
|
// Encryption Level field.
|
|
//
|
|
const EncryptionLevel EncryptionLevels[] = {
|
|
{ IDS_LOW, REG_LOW, 0 },
|
|
{ IDS_COMPATIBLE, REG_MEDIUM, ELF_DEFAULT },
|
|
{ IDS_HIGH, REG_HIGH, 0 },
|
|
{ IDS_FIPS, REG_FIPS, 0 }
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DllMain
|
|
//
|
|
// Main entry point of the DLL
|
|
//
|
|
BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
|
{
|
|
#if defined(FULL_DEBUG)
|
|
OutputDebugString(TEXT("RDPCFGX: DllMain Called\n"));
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ExtStart
|
|
//
|
|
// WinCfg calls this function immediately after loading the DLL
|
|
// Put any global initialization stuff here
|
|
//
|
|
void WINAPI ExtStart(WDNAME *pWdName)
|
|
{
|
|
#if defined(FULL_DEBUG)
|
|
OutputDebugString(TEXT("RDPCFGX: ExtStart Called\n"));
|
|
#endif
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ExtEnd
|
|
//
|
|
// WinCfg calls this function when exiting
|
|
// Put any global cleanup stuff here
|
|
//
|
|
void WINAPI ExtEnd()
|
|
{
|
|
#if defined(FULL_DEBUG)
|
|
OutputDebugString(TEXT("RDPCFGX: ExtEnd Called\n"));
|
|
#endif
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
// We need to be compatible with citrix, modifying EncryptionLevel struct
|
|
// would cause some undesirable results on a metaframe server. Currently
|
|
// the MS ext will support description for the encryption levels.
|
|
// When TSCC obtains the extension config dll it will getproc this method
|
|
// failure indicates that we have a non-MS cfgdll
|
|
//
|
|
LONG WINAPI ExtGetEncryptionLevelDescr( int idx , int *pnResid )
|
|
{
|
|
switch( idx )
|
|
{
|
|
case REG_LOW:
|
|
|
|
*pnResid = IDS_LOW_DESCR;
|
|
break;
|
|
|
|
case REG_MEDIUM:
|
|
|
|
*pnResid = IDS_COMPATIBLE_DESCR;
|
|
break;
|
|
|
|
case REG_HIGH:
|
|
|
|
*pnResid = IDS_HI_DESCR;
|
|
break;
|
|
|
|
case REG_FIPS:
|
|
|
|
*pnResid = IDS_FIPS_DESCR;
|
|
break;
|
|
|
|
default:
|
|
#if DBG
|
|
OutputDebugString(TEXT("RDPCFGX: ExtGetEncryptionLevelDescr - invalid arg\n"));
|
|
#endif
|
|
*pnResid = 0;
|
|
}
|
|
|
|
return ( *pnResid ? 0 : -1 );
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
// VER_PRODUCTVERSION_DW defined in ntverp.h
|
|
//-------------------------------------------------------------------------
|
|
DWORD WINAPI ExGetCfgVersionInfo( void )
|
|
{
|
|
return VER_PRODUCTVERSION_DW;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ExtEncryptionLevels
|
|
//
|
|
// Provide array of encryption levels for this protocol
|
|
// Returns the number of encryption levels in the array
|
|
//
|
|
LONG WINAPI ExtEncryptionLevels(WDNAME *pWdName, EncryptionLevel **levels)
|
|
{
|
|
#if defined(FULL_DEBUG)
|
|
OutputDebugString(TEXT("RDPCFGX: ExtEncryptionLevels Called\n"));
|
|
#endif
|
|
|
|
*levels = (EncryptionLevel *)EncryptionLevels;
|
|
|
|
return NUM_RDP_ENCRYPTION_LEVELS;
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// ExtGetCapabilities
|
|
//
|
|
// This routine returns a ULONG which contains a mask of the different
|
|
// Client settings that the RDP protocol supports.
|
|
//
|
|
ULONG WINAPI ExtGetCapabilities(void)
|
|
{
|
|
return ( WDC_CLIENT_AUDIO_MAPPING |
|
|
WDC_CLIENT_DRIVE_MAPPING |
|
|
WDC_WIN_CLIENT_PRINTER_MAPPING |
|
|
WDC_CLIENT_LPT_PORT_MAPPING |
|
|
WDC_CLIENT_COM_PORT_MAPPING |
|
|
WDC_CLIENT_CLIPBOARD_MAPPING |
|
|
|
|
// left here for backwards compatibility
|
|
WDC_SHADOWING );
|
|
}
|