delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/02/06/16:12:33

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=BAYES_00
X-Spam-Check-By: sourceware.org
X-ASG-Debug-ID: 1233954739-4f4200010000-w5GHUG
X-Barracuda-URL: http://10.10.100.8:8000/cgi-bin/mark.cgi
MIME-Version: 1.0
X-ASG-Orig-Subj: w32api 3.13-1 Incorrect #define of WTS_CURRENT_SESSION in wtsapi32.h
Subject: w32api 3.13-1 Incorrect #define of WTS_CURRENT_SESSION in wtsapi32.h
Date: Fri, 6 Feb 2009 16:12:26 -0500
Message-ID: <DCF0BC3A6120BA458855EE58D5A3D72E016DA9@TRIVINMAIL.corp.trivininc.com>
From: "Linton Miller" <Linton DOT Miller AT trivininc DOT com>
To: <cygwin AT cygwin DOT com>
X-Barracuda-Connect: UNKNOWN[10.10.100.232]
X-Barracuda-Start-Time: 1233954740
X-Barracuda-Virus-Scanned: by Barracuda Spam Firewall at trivininc.com
X-Barracuda-Spam-Score: -1002.00
X-Barracuda-Spam-Status: No, SCORE=-1002.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=1000.0
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Note-from-DJ: This may be spam

In w32api, the definition of WTS_CURRENT_SESSION in wtsapi32.h is

#define WTS_CURRENT_SESSION       0

However, from the Microsoft Windows SDK for Windows Server 2008 and .NET
Framework 3.5
(http://www.microsoft.com/downloads/details.aspx?FamilyId=3DE6E1C3DF-A74F-
4207-8586-711EBE331CDC&displaylang=3Den), the definition is=20

/*
 *  Specifies the current session (SessionId)
 */
#define WTS_CURRENT_SESSION ((DWORD)-1)


This results in the wrong session being referenced when used in WTS API
calls such as WTSQuerySessionInformation. The following small example
demonstrates the problem: when I run this over an RDP connection to my
Windows box (logged in as an admin user), it prints
  Is a remote connection: 0
which is obviously incorrect. If the "WTS_CURRENT_SESSION" is changed to
"-1", then the expected result
  Is a remote connection: 1
is returned.

/* Compile with gcc -Wall -DWINVER=3D0x0501 -o test-wts test-wts.c
-lwtsapi32 */

#include <windows.h>
#include <wtsapi32.h>
#include <stdio.h>

int main(void) {
  USHORT *clnProto;
  DWORD size;

  if (WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,
WTS_CURRENT_SESSION, WTSClientProtocolType, (LPTSTR *)&clnProto, &size))
{
    printf("Is a remote connection: %d\n", (*clnProto !=3D 0));
    WTSFreeMemory(clnProto);
  }
  return 0;
}

Linton



--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019