aka » Вт фев 19, 2013 8:53 pm
Кусок кода, который у нас сейчас канал открывает и компилируется в visual studio express 2008:
===
#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001L
#define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008L
typedef HANDLE (__stdcall *type_WTSVirtualChannelOpenEx) (
_In_ DWORD SessionId,
_In_ LPSTR pVirtualName,
_In_ DWORD flags
);
.....
HMODULE _wtsapi32_dll = ::LoadLibrary (L"wtsapi32.dll");
если (_wtsapi32_dll == NULL) все пропало
type_WTSVirtualChannelOpenEx l_WTSVirtualChannelOpenEx = (type_WTSVirtualChannelOpenEx) ::GetProcAddress (_wtsapi32_dll, "WTSVirtualChannelOpenEx");
HANDLE VC;
if (l_WTSVirtualChannelOpenEx != NULL)
{
// На 2012 сервере WTSVirtualChannelOpen зависает секунд на десять, если пытается открыть
// несуществующий статический канал. Поэтому я, если возможно, пользуюсь динамическим
// каналом. На 2003 сервере динамических каналов не было, но зато на нем статические каналы
// открываются без этих тупых тормозов.
VC = l_WTSVirtualChannelOpenEx (WTS_CURRENT_SESSION, "WTDVC", WTS_CHANNEL_OPTION_DYNAMIC | WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS);
}
else
{
VC = WTSVirtualChannelOpen (WTS_CURRENT_SERVER, WTS_CURRENT_SESSION, "WTVC");
}
if (VC != NULL)
{
// ура, мы под втварью.
}
Кусок кода, который у нас сейчас канал открывает и компилируется в visual studio express 2008:
===
#define WTS_CHANNEL_OPTION_DYNAMIC 0x00000001L
#define WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS 0x00000008L
typedef HANDLE (__stdcall *type_WTSVirtualChannelOpenEx) (
_In_ DWORD SessionId,
_In_ LPSTR pVirtualName,
_In_ DWORD flags
);
.....
HMODULE _wtsapi32_dll = ::LoadLibrary (L"wtsapi32.dll");
если (_wtsapi32_dll == NULL) все пропало
type_WTSVirtualChannelOpenEx l_WTSVirtualChannelOpenEx = (type_WTSVirtualChannelOpenEx) ::GetProcAddress (_wtsapi32_dll, "WTSVirtualChannelOpenEx");
HANDLE VC;
if (l_WTSVirtualChannelOpenEx != NULL)
{
// На 2012 сервере WTSVirtualChannelOpen зависает секунд на десять, если пытается открыть
// несуществующий статический канал. Поэтому я, если возможно, пользуюсь динамическим
// каналом. На 2003 сервере динамических каналов не было, но зато на нем статические каналы
// открываются без этих тупых тормозов.
VC = l_WTSVirtualChannelOpenEx (WTS_CURRENT_SESSION, "WTDVC", WTS_CHANNEL_OPTION_DYNAMIC | WTS_CHANNEL_OPTION_DYNAMIC_NO_COMPRESS);
}
else
{
VC = WTSVirtualChannelOpen (WTS_CURRENT_SERVER, WTS_CURRENT_SESSION, "WTVC");
}
if (VC != NULL)
{
// ура, мы под втварью.
}