1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300 |
- {******************************************************************************}
- { }
- { Terminal Services API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { The original file is: wtsapi32.h, released June 2000. The original Pascal }
- { code is: WtsApi32.pas, released December 2000. The initial developer of the }
- { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- // $Id: JwaWtsApi32.pas,v 1.10 2005/09/06 16:36:51 marquardt Exp $
- unit JwaWtsApi32;
- {$I jediapilib.inc}
- interface
- uses
- JwaWindows;
- // Windows Terminal Server public APIs
- //
- // Copyright 1995-1999, Citrix Systems Inc.
- // Copyright (c) 1997-1999 Microsoft Corporation
- //==============================================================================
- // Defines
- //==============================================================================
- //
- // Specifies the current server
- //
- const
- WTS_CURRENT_SERVER = HANDLE(0);
- {$EXTERNALSYM WTS_CURRENT_SERVER}
- WTS_CURRENT_SERVER_HANDLE = HANDLE(0);
- {$EXTERNALSYM WTS_CURRENT_SERVER_HANDLE}
- WTS_CURRENT_SERVER_NAME = '';
- {$EXTERNALSYM WTS_CURRENT_SERVER_NAME}
- //
- // Specifies the current session (SessionId)
- //
- WTS_CURRENT_SESSION = DWORD(-1);
- {$EXTERNALSYM WTS_CURRENT_SESSION}
- //
- // Possible pResponse values from WTSSendMessage()
- //
- IDTIMEOUT = 32000;
- {$EXTERNALSYM IDTIMEOUT}
- IDASYNC = 32001;
- {$EXTERNALSYM IDASYNC}
- //
- // Shutdown flags
- //
- WTS_WSD_LOGOFF = $00000001; // log off all users except
- {$EXTERNALSYM WTS_WSD_LOGOFF} // current user; deletes
- // WinStations (a reboot is
- // required to recreate the
- // WinStations)
- WTS_WSD_SHUTDOWN = $00000002; // shutdown system
- {$EXTERNALSYM WTS_WSD_SHUTDOWN}
- WTS_WSD_REBOOT = $00000004; // shutdown and reboot
- {$EXTERNALSYM WTS_WSD_REBOOT}
- WTS_WSD_POWEROFF = $00000008; // shutdown and power off (on
- {$EXTERNALSYM WTS_WSD_POWEROFF}
- // machines that support power
- // off through software)
- WTS_WSD_FASTREBOOT = $00000010; // reboot without logging users
- {$EXTERNALSYM WTS_WSD_FASTREBOOT} // off or shutting down
- //==============================================================================
- // WTS_CONNECTSTATE_CLASS - Session connect state
- //==============================================================================
- type
- _WTS_CONNECTSTATE_CLASS = (
- WTSActive, // User logged on to WinStation
- WTSConnected, // WinStation connected to client
- WTSConnectQuery, // In the process of connecting to client
- WTSShadow, // Shadowing another WinStation
- WTSDisconnected, // WinStation logged on without client
- WTSIdle, // Waiting for client to connect
- WTSListen, // WinStation is listening for connection
- WTSReset, // WinStation is being reset
- WTSDown, // WinStation is down due to error
- WTSInit); // WinStation in initialization
- {$EXTERNALSYM _WTS_CONNECTSTATE_CLASS}
- WTS_CONNECTSTATE_CLASS = _WTS_CONNECTSTATE_CLASS;
- {$EXTERNALSYM WTS_CONNECTSTATE_CLASS}
- TWtsConnectStateClass = WTS_CONNECTSTATE_CLASS;
- //==============================================================================
- // WTS_SERVER_INFO - returned by WTSEnumerateServers (version 1)
- //==============================================================================
- //
- // WTSEnumerateServers() returns two variables: pServerInfo and Count.
- // The latter is the number of WTS_SERVER_INFO structures contained in
- // the former. In order to read each server, iterate i from 0 to
- // Count-1 and reference the server name as
- // pServerInfo[i].pServerName; for example:
- //
- // for ( i=0; i < Count; i++ ) {
- // _tprintf( TEXT("%s "), pServerInfo[i].pServerName );
- // }
- //
- // The memory returned looks like the following. P is a pServerInfo
- // pointer, and D is the string data for that pServerInfo:
- //
- // P1 P2 P3 P4 ... Pn D1 D2 D3 D4 ... Dn
- //
- // This makes it easier to iterate the servers, using code similar to
- // the above.
- //
- type
- PWTS_SERVER_INFOW = ^WTS_SERVER_INFOW;
- {$EXTERNALSYM PWTS_SERVER_INFOW}
- _WTS_SERVER_INFOW = record
- pServerName: LPWSTR; // server name
- end;
- {$EXTERNALSYM _WTS_SERVER_INFOW}
- WTS_SERVER_INFOW = _WTS_SERVER_INFOW;
- {$EXTERNALSYM WTS_SERVER_INFOW}
- TWtsServerInfoW = WTS_SERVER_INFOW;
- PWtsServerInfoW = PWTS_SERVER_INFOW;
- PWTS_SERVER_INFOA = ^WTS_SERVER_INFOA;
- {$EXTERNALSYM PWTS_SERVER_INFOA}
- _WTS_SERVER_INFOA = record
- pServerName: LPSTR; // server name
- end;
- {$EXTERNALSYM _WTS_SERVER_INFOA}
- WTS_SERVER_INFOA = _WTS_SERVER_INFOA;
- {$EXTERNALSYM WTS_SERVER_INFOA}
- TWtsServerInfoA = WTS_SERVER_INFOA;
- PWtsServerInfoA = PWTS_SERVER_INFOA;
- {$IFDEF UNICODE}
- WTS_SERVER_INFO = WTS_SERVER_INFOW;
- {$EXTERNALSYM WTS_SERVER_INFO}
- PWTS_SERVER_INFO = PWTS_SERVER_INFOW;
- {$EXTERNALSYM PWTS_SERVER_INFO}
- TWtsServerInfo = TWtsServerInfoW;
- PWtsServerInfo = PWtsServerInfoW;
- {$ELSE}
- WTS_SERVER_INFO = WTS_SERVER_INFOA;
- {$EXTERNALSYM WTS_SERVER_INFO}
- PWTS_SERVER_INFO = PWTS_SERVER_INFOA;
- {$EXTERNALSYM PWTS_SERVER_INFO}
- TWtsServerInfo = TWtsServerInfoA;
- PWtsServerInfo = PWtsServerInfoA;
- {$ENDIF UNICODE}
- //==============================================================================
- // WTS_SESSION_INFO - returned by WTSEnumerateSessions (version 1)
- //==============================================================================
- //
- // WTSEnumerateSessions() returns data in a similar format to the above
- // WTSEnumerateServers(). It returns two variables: pSessionInfo and
- // Count. The latter is the number of WTS_SESSION_INFO structures
- // contained in the former. Iteration is similar, except that there
- // are three parts to each entry, so it would look like this:
- //
- // for ( i=0; i < Count; i++ ) {
- // _tprintf( TEXT("%-5u %-20s %u\n"),
- // pSessionInfo[i].SessionId,
- // pSessionInfo[i].pWinStationName,
- // pSessionInfo[i].State );
- // }
- //
- // The memory returned is also segmented as the above, with all the
- // structures allocated at the start and the string data at the end.
- // We'll use S for the SessionId, P for the pWinStationName pointer
- // and D for the string data, and C for the connect State:
- //
- // S1 P1 C1 S2 P2 C2 S3 P3 C3 S4 P4 C4 ... Sn Pn Cn D1 D2 D3 D4 ... Dn
- //
- // As above, this makes it easier to iterate the sessions.
- //
- type
- PWTS_SESSION_INFOW = ^WTS_SESSION_INFOW;
- {$EXTERNALSYM PWTS_SESSION_INFOW}
- _WTS_SESSION_INFOW = record
- SessionId: DWORD; // session id
- pWinStationName: LPWSTR; // name of WinStation this session is connected to
- State: WTS_CONNECTSTATE_CLASS; // connection state (see enum)
- end;
- {$EXTERNALSYM _WTS_SESSION_INFOW}
- WTS_SESSION_INFOW = _WTS_SESSION_INFOW;
- {$EXTERNALSYM WTS_SESSION_INFOW}
- TWtsSessionInfoW = WTS_SESSION_INFOW;
- PWtsSessionInfoW = PWTS_SESSION_INFOW;
- PWTS_SESSION_INFOA = ^WTS_SESSION_INFOA;
- {$EXTERNALSYM PWTS_SESSION_INFOA}
- _WTS_SESSION_INFOA = record
- SessionId: DWORD; // session id
- pWinStationName: LPSTR; // name of WinStation this session is connected to
- State: WTS_CONNECTSTATE_CLASS; // connection state (see enum)
- end;
- {$EXTERNALSYM _WTS_SESSION_INFOA}
- WTS_SESSION_INFOA = _WTS_SESSION_INFOA;
- {$EXTERNALSYM WTS_SESSION_INFOA}
- TWtsSessionInfoA = WTS_SESSION_INFOA;
- PWtsSessionInfoA = PWTS_SESSION_INFOA;
- {$IFDEF UNICODE}
- WTS_SESSION_INFO = WTS_SESSION_INFOW;
- PWTS_SESSION_INFO = PWTS_SESSION_INFOW;
- TWtsSessionInfo = TWtsSessionInfoW;
- PWtsSessionInfo = PWtsSessionInfoW;
- {$ELSE}
- WTS_SESSION_INFO = WTS_SESSION_INFOA;
- PWTS_SESSION_INFO = PWTS_SESSION_INFOA;
- TWtsSessionInfo = TWtsSessionInfoA;
- PWtsSessionInfo = PWtsSessionInfoA;
- {$ENDIF UNICODE}
- //==============================================================================
- // WTS_PROCESS_INFO - returned by WTSEnumerateProcesses (version 1)
- //==============================================================================
- //
- // WTSEnumerateProcesses() also returns data similar to
- // WTSEnumerateServers(). It returns two variables: pProcessInfo and
- // Count. The latter is the number of WTS_PROCESS_INFO structures
- // contained in the former. Iteration is similar, except that there
- // are four parts to each entry, so it would look like this:
- //
- // for ( i=0; i < Count; i++ ) {
- // GetUserNameFromSid( pProcessInfo[i].pUserSid, UserName,
- // sizeof(UserName) );
- // _tprintf( TEXT("%-5u %-20s %-5u %s\n"),
- // pProcessInfo[i].SessionId,
- // UserName,
- // pProcessInfo[i].ProcessId,
- // pProcessInfo[i].pProcessName );
- // }
- //
- // The memory returned is also segmented as the above, with all the
- // structures allocated at the start and the string data at the end.
- // We'll use S for the SessionId, R for the ProcessId, P for the
- // pProcessName pointer and D for the string data, and U for pUserSid:
- //
- // S1 R1 P1 U1 S2 R2 P2 U2 S3 R3 P3 U3 ... Sn Rn Pn Un D1 D2 D3 ... Dn
- //
- // As above, this makes it easier to iterate the processes.
- //
- type
- PWTS_PROCESS_INFOW = ^WTS_PROCESS_INFOW;
- {$EXTERNALSYM PWTS_PROCESS_INFOW}
- _WTS_PROCESS_INFOW = record
- SessionId: DWORD; // session id
- ProcessId: DWORD; // process id
- pProcessName: LPWSTR; // name of process
- pUserSid: PSID; // user's SID
- end;
- {$EXTERNALSYM _WTS_PROCESS_INFOW}
- WTS_PROCESS_INFOW = _WTS_PROCESS_INFOW;
- {$EXTERNALSYM WTS_PROCESS_INFOW}
- TWtsProcessInfoW = WTS_PROCESS_INFOW;
- PWtsProcessInfoW = PWTS_PROCESS_INFOW;
- PWTS_PROCESS_INFOA = ^WTS_PROCESS_INFOA;
- {$EXTERNALSYM PWTS_PROCESS_INFOA}
- _WTS_PROCESS_INFOA = record
- SessionId: DWORD; // session id
- ProcessId: DWORD; // process id
- pProcessName: LPSTR; // name of process
- pUserSid: PSID; // user's SID
- end;
- {$EXTERNALSYM _WTS_PROCESS_INFOA}
- WTS_PROCESS_INFOA = _WTS_PROCESS_INFOA;
- {$EXTERNALSYM WTS_PROCESS_INFOA}
- TWtsProcessInfoA = WTS_PROCESS_INFOA;
- PWtsProcessInfoA = PWTS_PROCESS_INFOA;
- {$IFDEF UNICODE}
- WTS_PROCESS_INFO = WTS_PROCESS_INFOW;
- {$EXTERNALSYM WTS_PROCESS_INFO}
- PWTS_PROCESS_INFO = PWTS_PROCESS_INFOW;
- {$EXTERNALSYM PWTS_PROCESS_INFO}
- TWtsProcessInfo = TWtsProcessInfoW;
- PWtsProcessInfo = PWtsProcessInfoW;
- {$ELSE}
- WTS_PROCESS_INFO = WTS_PROCESS_INFOA;
- {$EXTERNALSYM WTS_PROCESS_INFO}
- PWTS_PROCESS_INFO = PWTS_PROCESS_INFOA;
- {$EXTERNALSYM PWTS_PROCESS_INFO}
- TWtsProcessInfo = TWtsProcessInfoA;
- PWtsProcessInfo = PWtsProcessInfoA;
- {$ENDIF UNICODE}
- //==============================================================================
- // WTS_INFO_CLASS - WTSQuerySessionInformation
- // (See additional typedefs for more info on structures)
- //==============================================================================
- const
- WTS_PROTOCOL_TYPE_CONSOLE = 0; // Console
- {$EXTERNALSYM WTS_PROTOCOL_TYPE_CONSOLE}
- WTS_PROTOCOL_TYPE_ICA = 1; // ICA Protocol
- {$EXTERNALSYM WTS_PROTOCOL_TYPE_ICA}
- WTS_PROTOCOL_TYPE_RDP = 2; // RDP Protocol
- {$EXTERNALSYM WTS_PROTOCOL_TYPE_RDP}
- type
- _WTS_INFO_CLASS = (
- WTSInitialProgram,
- WTSApplicationName,
- WTSWorkingDirectory,
- WTSOEMId,
- WTSSessionId,
- WTSUserName,
- WTSWinStationName,
- WTSDomainName,
- WTSConnectState,
- WTSClientBuildNumber,
- WTSClientName,
- WTSClientDirectory,
- WTSClientProductId,
- WTSClientHardwareId,
- WTSClientAddress,
- WTSClientDisplay,
- WTSClientProtocolType);
- {$EXTERNALSYM _WTS_INFO_CLASS}
- WTS_INFO_CLASS = _WTS_INFO_CLASS;
- TWtsInfoClass = WTS_INFO_CLASS;
- //==============================================================================
- // WTSQuerySessionInformation - (WTSClientAddress)
- //==============================================================================
- type
- PWTS_CLIENT_ADDRESS = ^WTS_CLIENT_ADDRESS;
- {$EXTERNALSYM PWTS_CLIENT_ADDRESS}
- _WTS_CLIENT_ADDRESS = record
- AddressFamily: DWORD; // AF_INET, AF_IPX, AF_NETBIOS, AF_UNSPEC
- Address: array [0..19] of BYTE; // client network address
- end;
- {$EXTERNALSYM _WTS_CLIENT_ADDRESS}
- WTS_CLIENT_ADDRESS = _WTS_CLIENT_ADDRESS;
- {$EXTERNALSYM WTS_CLIENT_ADDRESS}
- TWtsClientAddress = WTS_CLIENT_ADDRESS;
- PWtsClientAddress = PWTS_CLIENT_ADDRESS;
- //==============================================================================
- // WTSQuerySessionInformation - (WTSClientDisplay)
- //==============================================================================
- type
- PWTS_CLIENT_DISPLAY = ^WTS_CLIENT_DISPLAY;
- {$EXTERNALSYM PWTS_CLIENT_DISPLAY}
- _WTS_CLIENT_DISPLAY = record
- HorizontalResolution: DWORD; // horizontal dimensions, in pixels
- VerticalResolution: DWORD; // vertical dimensions, in pixels
- ColorDepth: DWORD; // 1=16, 2=256, 4=64K, 8=16M
- end;
- {$EXTERNALSYM _WTS_CLIENT_DISPLAY}
- WTS_CLIENT_DISPLAY = _WTS_CLIENT_DISPLAY;
- {$EXTERNALSYM WTS_CLIENT_DISPLAY}
- TWtsClientDisplay = WTS_CLIENT_DISPLAY;
- PWtsClientDisplay = PWTS_CLIENT_DISPLAY;
- //==============================================================================
- // WTS_CONFIG_CLASS - WTSQueryUserConfig/WTSSetUserConfig
- //==============================================================================
- type
- _WTS_CONFIG_CLASS = (
- //Initial program settings
- WTSUserConfigInitialProgram, // string returned/expected
- WTSUserConfigWorkingDirectory, // string returned/expected
- WTSUserConfigfInheritInitialProgram, // DWORD returned/expected
- //
- WTSUserConfigfAllowLogonTerminalServer, //DWORD returned/expected
- //Timeout settings
- WTSUserConfigTimeoutSettingsConnections, //DWORD returned/expected
- WTSUserConfigTimeoutSettingsDisconnections, //DWORD returned/expected
- WTSUserConfigTimeoutSettingsIdle, //DWORD returned/expected
- //Client device settings
- WTSUserConfigfDeviceClientDrives, //DWORD returned/expected
- WTSUserConfigfDeviceClientPrinters, //DWORD returned/expected
- WTSUserConfigfDeviceClientDefaultPrinter, //DWORD returned/expected
- //Connection settings
- WTSUserConfigBrokenTimeoutSettings, //DWORD returned/expected
- WTSUserConfigReconnectSettings, //DWORD returned/expected
- //Modem settings
- WTSUserConfigModemCallbackSettings, //DWORD returned/expected
- WTSUserConfigModemCallbackPhoneNumber, // string returned/expected
- //Shadow settings
- WTSUserConfigShadowingSettings, //DWORD returned/expected
- //User Profile settings
- WTSUserConfigTerminalServerProfilePath, // string returned/expected
- //Terminal Server home directory
- WTSUserConfigTerminalServerHomeDir, // string returned/expected
- WTSUserConfigTerminalServerHomeDirDrive, // string returned/expected
- WTSUserConfigfTerminalServerRemoteHomeDir); // DWORD 0:LOCAL 1:REMOTE
- {$EXTERNALSYM _WTS_CONFIG_CLASS}
- WTS_CONFIG_CLASS = _WTS_CONFIG_CLASS;
- TWtsConfigClass = WTS_CONFIG_CLASS;
- {$IFDEF FALSE}
- // There we're remove in June 2001 PSDK (pre-release)
- PWTS_USER_CONFIG_SET_NWSERVERW = ^WTS_USER_CONFIG_SET_NWSERVERW;
- {$EXTERNALSYM PWTS_USER_CONFIG_SET_NWSERVERW}
- _WTS_USER_CONFIG_SET_NWSERVERW = record
- pNWServerName: LPWSTR;
- pNWDomainAdminName: LPWSTR;
- pNWDomainAdminPassword: LPWSTR;
- end;
- {$EXTERNALSYM _WTS_USER_CONFIG_SET_NWSERVERW}
- WTS_USER_CONFIG_SET_NWSERVERW = _WTS_USER_CONFIG_SET_NWSERVERW;
- {$EXTERNALSYM WTS_USER_CONFIG_SET_NWSERVERW}
- TWtsUserConfigSetNwserverW = WTS_USER_CONFIG_SET_NWSERVERW;
- PWtsUserConfigSetNwserverW = PWTS_USER_CONFIG_SET_NWSERVERW;
- PWTS_USER_CONFIG_SET_NWSERVERA = ^WTS_USER_CONFIG_SET_NWSERVERA;
- {$EXTERNALSYM PWTS_USER_CONFIG_SET_NWSERVERA}
- _WTS_USER_CONFIG_SET_NWSERVERA = record
- pNWServerName: LPSTR;
- pNWDomainAdminName: LPSTR;
- pNWDomainAdminPassword: LPSTR;
- end;
- {$EXTERNALSYM _WTS_USER_CONFIG_SET_NWSERVERA}
- WTS_USER_CONFIG_SET_NWSERVERA = _WTS_USER_CONFIG_SET_NWSERVERA;
- {$EXTERNALSYM WTS_USER_CONFIG_SET_NWSERVERA}
- TWtsUserConfigSetNwserverA = WTS_USER_CONFIG_SET_NWSERVERA;
- PWtsUserConfigSetNwserverA = PWTS_USER_CONFIG_SET_NWSERVERA;
- {$IFDEF UNICODE}
- WTS_USER_CONFIG_SET_NWSERVER = WTS_USER_CONFIG_SET_NWSERVERW;
- {$EXTERNALSYM WTS_USER_CONFIG_SET_NWSERVER}
- PWTS_USER_CONFIG_SET_NWSERVER = PWTS_USER_CONFIG_SET_NWSERVERW;
- {$EXTERNALSYM PWTS_USER_CONFIG_SET_NWSERVER}
- TWtsUserConfigSetNwserver = TWtsUserConfigSetNwserverW;
- PWtsUserConfigSetNwserver = PWtsUserConfigSetNwserverW;
- {$ELSE}
- WTS_USER_CONFIG_SET_NWSERVER = WTS_USER_CONFIG_SET_NWSERVERA;
- {$EXTERNALSYM WTS_USER_CONFIG_SET_NWSERVER}
- PWTS_USER_CONFIG_SET_NWSERVER = PWTS_USER_CONFIG_SET_NWSERVERA;
- {$EXTERNALSYM PWTS_USER_CONFIG_SET_NWSERVER}
- TWtsUserConfigSetNwserver = TWtsUserConfigSetNwserverA;
- PWtsUserConfigSetNwserver = PWtsUserConfigSetNwserverA;
- {$ENDIF UNICODE}
- {$ENDIF FALSE}
- //==============================================================================
- // WTS_EVENT - Event flags for WTSWaitSystemEvent
- //==============================================================================
- const
- WTS_EVENT_NONE = $00000000; // return no event
- {$EXTERNALSYM WTS_EVENT_NONE}
- WTS_EVENT_CREATE = $00000001; // new WinStation created
- {$EXTERNALSYM WTS_EVENT_CREATE}
- WTS_EVENT_DELETE = $00000002; // existing WinStation deleted
- {$EXTERNALSYM WTS_EVENT_DELETE}
- WTS_EVENT_RENAME = $00000004; // existing WinStation renamed
- {$EXTERNALSYM WTS_EVENT_RENAME}
- WTS_EVENT_CONNECT = $00000008; // WinStation connect to client
- {$EXTERNALSYM WTS_EVENT_CONNECT}
- WTS_EVENT_DISCONNECT = $00000010; // WinStation logged on without client
- {$EXTERNALSYM WTS_EVENT_DISCONNECT}
- WTS_EVENT_LOGON = $00000020; // user logged on to existing WinStation
- {$EXTERNALSYM WTS_EVENT_LOGON}
- WTS_EVENT_LOGOFF = $00000040; // user logged off from existing WinStation
- {$EXTERNALSYM WTS_EVENT_LOGOFF}
- WTS_EVENT_STATECHANGE = $00000080; // WinStation state change
- {$EXTERNALSYM WTS_EVENT_STATECHANGE}
- WTS_EVENT_LICENSE = $00000100; // license state change
- {$EXTERNALSYM WTS_EVENT_LICENSE}
- WTS_EVENT_ALL = $7fffffff; // wait for all event types
- {$EXTERNALSYM WTS_EVENT_ALL}
- WTS_EVENT_FLUSH = DWORD($80000000); // unblock all waiters
- {$EXTERNALSYM WTS_EVENT_FLUSH}
- //==============================================================================
- // WTS_VIRTUAL_CLASS - WTSVirtualChannelQuery
- //==============================================================================
- type
- _WTS_VIRTUAL_CLASS = (WTSVirtualClientData, WTSVirtualFileHandle);
- {$EXTERNALSYM _WTS_VIRTUAL_CLASS}
- WTS_VIRTUAL_CLASS = _WTS_VIRTUAL_CLASS;
- {$EXTERNALSYM WTS_VIRTUAL_CLASS}
- TWtsVirtualClass = WTS_VIRTUAL_CLASS;
- //==============================================================================
- // Windows Terminal Server public APIs
- //==============================================================================
- function WTSEnumerateServersA(pDomainName: LPSTR; Reserved, Version: DWORD;
- var ppServerInfo: PWTS_SERVER_INFOA; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateServersA}
- function WTSEnumerateServersW(pDomainName: LPWSTR; Reserved, Version: DWORD;
- var ppServerInfo: PWTS_SERVER_INFOW; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateServersW}
- function WTSEnumerateServers(pDomainName: LPTSTR; Reserved, Version: DWORD;
- var ppServerInfo: PWTS_SERVER_INFO; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateServers}
- //------------------------------------------------------------------------------
- function WTSOpenServerA(pServerName: LPSTR): HANDLE; stdcall;
- {$EXTERNALSYM WTSOpenServerA}
- function WTSOpenServerW(pServerName: LPWSTR): HANDLE; stdcall;
- {$EXTERNALSYM WTSOpenServerW}
- function WTSOpenServer(pServerName: LPTSTR): HANDLE; stdcall;
- {$EXTERNALSYM WTSOpenServer}
- //------------------------------------------------------------------------------
- procedure WTSCloseServer(hServer: HANDLE); stdcall;
- {$EXTERNALSYM WTSCloseServer}
- //------------------------------------------------------------------------------
- function WTSEnumerateSessionsA(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppSessionInfo: PWTS_SESSION_INFOA; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateSessionsA}
- function WTSEnumerateSessionsW(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppSessionInfo: PWTS_SESSION_INFOW; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateSessionsW}
- function WTSEnumerateSessions(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppSessionInfo: PWTS_SESSION_INFO; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateSessions}
- //------------------------------------------------------------------------------
- function WTSEnumerateProcessesA(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppProcessInfo: PWTS_PROCESS_INFOA; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateProcessesA}
- function WTSEnumerateProcessesW(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppProcessInfo: PWTS_PROCESS_INFOW; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateProcessesW}
- function WTSEnumerateProcesses(hServer: HANDLE; Reserved: DWORD; Version: DWORD;
- var ppProcessInfo: PWTS_PROCESS_INFO; var pCount: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSEnumerateProcesses}
- //------------------------------------------------------------------------------
- function WTSTerminateProcess(hServer: HANDLE; ProcessId, ExitCode: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSTerminateProcess}
- //------------------------------------------------------------------------------
- function WTSQuerySessionInformationA(hServer: HANDLE; SessionId: DWORD;
- WTSInfoClass: WTS_INFO_CLASS; var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQuerySessionInformationA}
- function WTSQuerySessionInformationW(hServer: HANDLE; SessionId: DWORD;
- WTSInfoClass: WTS_INFO_CLASS; var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQuerySessionInformationW}
- function WTSQuerySessionInformation(hServer: HANDLE; SessionId: DWORD;
- WTSInfoClass: WTS_INFO_CLASS; var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQuerySessionInformation}
- //------------------------------------------------------------------------------
- function WTSQueryUserConfigA(pServerName, pUserName: LPSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQueryUserConfigA}
- function WTSQueryUserConfigW(pServerName, pUserName: LPWSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQueryUserConfigW}
- function WTSQueryUserConfig(pServerName, pUserName: LPTSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- var ppBuffer: Pointer; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSQueryUserConfig}
- //------------------------------------------------------------------------------
- function WTSSetUserConfigA(pServerName, pUserName: LPSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- pBuffer: LPSTR; DataLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSSetUserConfigA}
- function WTSSetUserConfigW(pServerName, pUserName: LPWSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- pBuffer: LPWSTR; DataLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSSetUserConfigW}
- function WTSSetUserConfig(pServerName, pUserName: LPTSTR; WTSConfigClass: WTS_CONFIG_CLASS;
- pBuffer: LPTSTR; DataLength: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSSetUserConfig}
- //------------------------------------------------------------------------------
- function WTSSendMessageA(hServer: HANDLE; SessionId: DWORD; pTitle: LPSTR;
- TitleLength: DWORD; pMessage: LPSTR; MessageLength: DWORD; Style: DWORD;
- Timeout: DWORD; var pResponse: DWORD; bWait: BOOL): BOOL; stdcall;
- {$EXTERNALSYM WTSSendMessageA}
- function WTSSendMessageW(hServer: HANDLE; SessionId: DWORD; pTitle: LPWSTR;
- TitleLength: DWORD; pMessage: LPWSTR; MessageLength: DWORD; Style: DWORD;
- Timeout: DWORD; var pResponse: DWORD; bWait: BOOL): BOOL; stdcall;
- {$EXTERNALSYM WTSSendMessageW}
- function WTSSendMessage(hServer: HANDLE; SessionId: DWORD; pTitle: LPTSTR;
- TitleLength: DWORD; pMessage: LPTSTR; MessageLength: DWORD; Style: DWORD;
- Timeout: DWORD; var pResponse: DWORD; bWait: BOOL): BOOL; stdcall;
- {$EXTERNALSYM WTSSendMessage}
- //------------------------------------------------------------------------------
- function WTSDisconnectSession(hServer: HANDLE; SessionId: DWORD; bWait: BOOL): BOOL; stdcall;
- {$EXTERNALSYM WTSDisconnectSession}
- //------------------------------------------------------------------------------
- function WTSLogoffSession(hServer: HANDLE; SessionId: DWORD; bWait: BOOL): BOOL; stdcall;
- {$EXTERNALSYM WTSLogoffSession}
- //------------------------------------------------------------------------------
- function WTSShutdownSystem(hServer: HANDLE; ShutdownFlag: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSShutdownSystem}
- //------------------------------------------------------------------------------
- function WTSWaitSystemEvent(hServer: HANDLE; EventMask: DWORD;
- var pEventFlags: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSWaitSystemEvent}
- //------------------------------------------------------------------------------
- function WTSVirtualChannelOpen(hServer: HANDLE; SessionId: DWORD;
- pVirtualName: LPSTR): HANDLE; stdcall;
- {$EXTERNALSYM WTSVirtualChannelOpen}
- function WTSVirtualChannelClose(hChannelHandle: HANDLE): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelClose}
- function WTSVirtualChannelRead(hChannelHandle: HANDLE; TimeOut: ULONG;
- Buffer: PCHAR; BufferSize: ULONG; var pBytesRead: ULONG): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelRead}
- function WTSVirtualChannelWrite(hChannelHandle: HANDLE; Buffer: PCHAR;
- Length: ULONG; var pBytesWritten: ULONG): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelWrite}
- function WTSVirtualChannelPurgeInput(hChannelHandle: HANDLE): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelPurgeInput}
- function WTSVirtualChannelPurgeOutput(hChannelHandle: HANDLE): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelPurgeOutput}
- function WTSVirtualChannelQuery(hChannelHandle: HANDLE; VirtualClass: WTS_VIRTUAL_CLASS;
- ppBuffer: PVOID; var pBytesReturned: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSVirtualChannelQuery}
- //------------------------------------------------------------------------------
- procedure WTSFreeMemory(pMemory: PVOID); stdcall;
- {$EXTERNALSYM WTSFreeMemory}
- // Flags for Console Notification
- const
- NOTIFY_FOR_ALL_SESSIONS = 1;
- {$EXTERNALSYM NOTIFY_FOR_ALL_SESSIONS}
- NOTIFY_FOR_THIS_SESSION = 0;
- {$EXTERNALSYM NOTIFY_FOR_THIS_SESSION}
- function WTSRegisterSessionNotification(hWnd: HWND; dwFlags: DWORD): BOOL; stdcall;
- {$EXTERNALSYM WTSRegisterSessionNotification}
- function WTSUnRegisterSessionNotification(hWnd: HWND): BOOL; stdcall;
- {$EXTERNALSYM WTSUnRegisterSessionNotification}
- function WTSQueryUserToken(SessionId: ULONG; var phToken: HANDLE): BOOL; stdcall;
- {$EXTERNALSYM WTSQueryUserToken}
- implementation
- uses
- JwaWinDLLNames;
- {$IFDEF DYNAMIC_LINK}
- var
- _WTSEnumerateServersA: Pointer;
- function WTSEnumerateServersA;
- begin
- GetProcedureAddress(_WTSEnumerateServersA, wtsapi, 'WTSEnumerateServersA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateServersA]
- end;
- end;
- var
- _WTSEnumerateServersW: Pointer;
- function WTSEnumerateServersW;
- begin
- GetProcedureAddress(_WTSEnumerateServersW, wtsapi, 'WTSEnumerateServersW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateServersW]
- end;
- end;
- var
- _WTSEnumerateServers: Pointer;
- function WTSEnumerateServers;
- begin
- GetProcedureAddress(_WTSEnumerateServers, wtsapi, 'WTSEnumerateServers' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateServers]
- end;
- end;
- var
- _WTSOpenServerA: Pointer;
- function WTSOpenServerA;
- begin
- GetProcedureAddress(_WTSOpenServerA, wtsapi, 'WTSOpenServerA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSOpenServerA]
- end;
- end;
- var
- _WTSOpenServerW: Pointer;
- function WTSOpenServerW;
- begin
- GetProcedureAddress(_WTSOpenServerW, wtsapi, 'WTSOpenServerW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSOpenServerW]
- end;
- end;
- var
- _WTSOpenServer: Pointer;
- function WTSOpenServer;
- begin
- GetProcedureAddress(_WTSOpenServer, wtsapi, 'WTSOpenServer' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSOpenServer]
- end;
- end;
- var
- _WTSCloseServer: Pointer;
- procedure WTSCloseServer;
- begin
- GetProcedureAddress(_WTSCloseServer, wtsapi, 'WTSCloseServer');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSCloseServer]
- end;
- end;
- var
- _WTSEnumerateSessionsA: Pointer;
- function WTSEnumerateSessionsA;
- begin
- GetProcedureAddress(_WTSEnumerateSessionsA, wtsapi, 'WTSEnumerateSessionsA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateSessionsA]
- end;
- end;
- var
- _WTSEnumerateSessionsW: Pointer;
- function WTSEnumerateSessionsW;
- begin
- GetProcedureAddress(_WTSEnumerateSessionsW, wtsapi, 'WTSEnumerateSessionsW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateSessionsW]
- end;
- end;
- var
- _WTSEnumerateSessions: Pointer;
- function WTSEnumerateSessions;
- begin
- GetProcedureAddress(_WTSEnumerateSessions, wtsapi, 'WTSEnumerateSessions' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateSessions]
- end;
- end;
- var
- _WTSEnumerateProcessesA: Pointer;
- function WTSEnumerateProcessesA;
- begin
- GetProcedureAddress(_WTSEnumerateProcessesA, wtsapi, 'WTSEnumerateProcessesA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateProcessesA]
- end;
- end;
- var
- _WTSEnumerateProcessesW: Pointer;
- function WTSEnumerateProcessesW;
- begin
- GetProcedureAddress(_WTSEnumerateProcessesW, wtsapi, 'WTSEnumerateProcessesW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateProcessesW]
- end;
- end;
- var
- _WTSEnumerateProcesses: Pointer;
- function WTSEnumerateProcesses;
- begin
- GetProcedureAddress(_WTSEnumerateProcesses, wtsapi, 'WTSEnumerateProcesses' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSEnumerateProcesses]
- end;
- end;
- var
- _WTSTerminateProcess: Pointer;
- function WTSTerminateProcess;
- begin
- GetProcedureAddress(_WTSTerminateProcess, wtsapi, 'WTSTerminateProcess');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSTerminateProcess]
- end;
- end;
- var
- _WTSQuerySessionInformationA: Pointer;
- function WTSQuerySessionInformationA;
- begin
- GetProcedureAddress(_WTSQuerySessionInformationA, wtsapi, 'WTSQuerySessionInformationA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQuerySessionInformationA]
- end;
- end;
- var
- _WTSQuerySessionInformationW: Pointer;
- function WTSQuerySessionInformationW;
- begin
- GetProcedureAddress(_WTSQuerySessionInformationW, wtsapi, 'WTSQuerySessionInformationW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQuerySessionInformationW]
- end;
- end;
- var
- _WTSQuerySessionInformation: Pointer;
- function WTSQuerySessionInformation;
- begin
- GetProcedureAddress(_WTSQuerySessionInformation, wtsapi, 'WTSQuerySessionInformation' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQuerySessionInformation]
- end;
- end;
- var
- _WTSQueryUserConfigA: Pointer;
- function WTSQueryUserConfigA;
- begin
- GetProcedureAddress(_WTSQueryUserConfigA, wtsapi, 'WTSQueryUserConfigA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQueryUserConfigA]
- end;
- end;
- var
- _WTSQueryUserConfigW: Pointer;
- function WTSQueryUserConfigW;
- begin
- GetProcedureAddress(_WTSQueryUserConfigW, wtsapi, 'WTSQueryUserConfigW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQueryUserConfigW]
- end;
- end;
- var
- _WTSQueryUserConfig: Pointer;
- function WTSQueryUserConfig;
- begin
- GetProcedureAddress(_WTSQueryUserConfig, wtsapi, 'WTSQueryUserConfig' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQueryUserConfig]
- end;
- end;
- var
- _WTSSetUserConfigA: Pointer;
- function WTSSetUserConfigA;
- begin
- GetProcedureAddress(_WTSSetUserConfigA, wtsapi, 'WTSSetUserConfigA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSetUserConfigA]
- end;
- end;
- var
- _WTSSetUserConfigW: Pointer;
- function WTSSetUserConfigW;
- begin
- GetProcedureAddress(_WTSSetUserConfigW, wtsapi, 'WTSSetUserConfigW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSetUserConfigW]
- end;
- end;
- var
- _WTSSetUserConfig: Pointer;
- function WTSSetUserConfig;
- begin
- GetProcedureAddress(_WTSSetUserConfig, wtsapi, 'WTSSetUserConfig' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSetUserConfig]
- end;
- end;
- var
- _WTSSendMessageA: Pointer;
- function WTSSendMessageA;
- begin
- GetProcedureAddress(_WTSSendMessageA, wtsapi, 'WTSSendMessageA');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSendMessageA]
- end;
- end;
- var
- _WTSSendMessageW: Pointer;
- function WTSSendMessageW;
- begin
- GetProcedureAddress(_WTSSendMessageW, wtsapi, 'WTSSendMessageW');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSendMessageW]
- end;
- end;
- var
- _WTSSendMessage: Pointer;
- function WTSSendMessage;
- begin
- GetProcedureAddress(_WTSSendMessage, wtsapi, 'WTSSendMessage' + AWSuffix);
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSSendMessage]
- end;
- end;
- var
- _WTSDisconnectSession: Pointer;
- function WTSDisconnectSession;
- begin
- GetProcedureAddress(_WTSDisconnectSession, wtsapi, 'WTSDisconnectSession');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSDisconnectSession]
- end;
- end;
- var
- _WTSLogoffSession: Pointer;
- function WTSLogoffSession;
- begin
- GetProcedureAddress(_WTSLogoffSession, wtsapi, 'WTSLogoffSession');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSLogoffSession]
- end;
- end;
- var
- _WTSShutdownSystem: Pointer;
- function WTSShutdownSystem;
- begin
- GetProcedureAddress(_WTSShutdownSystem, wtsapi, 'WTSShutdownSystem');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSShutdownSystem]
- end;
- end;
- var
- _WTSWaitSystemEvent: Pointer;
- function WTSWaitSystemEvent;
- begin
- GetProcedureAddress(_WTSWaitSystemEvent, wtsapi, 'WTSWaitSystemEvent');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSWaitSystemEvent]
- end;
- end;
- var
- _WTSVirtualChannelOpen: Pointer;
- function WTSVirtualChannelOpen;
- begin
- GetProcedureAddress(_WTSVirtualChannelOpen, wtsapi, 'WTSVirtualChannelOpen');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelOpen]
- end;
- end;
- var
- _WTSVirtualChannelClose: Pointer;
- function WTSVirtualChannelClose;
- begin
- GetProcedureAddress(_WTSVirtualChannelClose, wtsapi, 'WTSVirtualChannelClose');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelClose]
- end;
- end;
- var
- _WTSVirtualChannelRead: Pointer;
- function WTSVirtualChannelRead;
- begin
- GetProcedureAddress(_WTSVirtualChannelRead, wtsapi, 'WTSVirtualChannelRead');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelRead]
- end;
- end;
- var
- _WTSVirtualChannelWrite: Pointer;
- function WTSVirtualChannelWrite;
- begin
- GetProcedureAddress(_WTSVirtualChannelWrite, wtsapi, 'WTSVirtualChannelWrite');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelWrite]
- end;
- end;
- var
- _WTSVirtualChannelPurgeInput: Pointer;
- function WTSVirtualChannelPurgeInput;
- begin
- GetProcedureAddress(_WTSVirtualChannelPurgeInput, wtsapi, 'WTSVirtualChannelPurgeInput');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelPurgeInput]
- end;
- end;
- var
- _WTSVirtualChannelPurgeOutput: Pointer;
- function WTSVirtualChannelPurgeOutput;
- begin
- GetProcedureAddress(_WTSVirtualChannelPurgeOutput, wtsapi, 'WTSVirtualChannelPurgeOutput');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelPurgeOutput]
- end;
- end;
- var
- _WTSVirtualChannelQuery: Pointer;
- function WTSVirtualChannelQuery;
- begin
- GetProcedureAddress(_WTSVirtualChannelQuery, wtsapi, 'WTSVirtualChannelQuery');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSVirtualChannelQuery]
- end;
- end;
- var
- _WTSFreeMemory: Pointer;
- procedure WTSFreeMemory;
- begin
- GetProcedureAddress(_WTSFreeMemory, wtsapi, 'WTSFreeMemory');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSFreeMemory]
- end;
- end;
- var
- _WTSRegisterSessionNotification: Pointer;
- function WTSRegisterSessionNotification;
- begin
- GetProcedureAddress(_WTSRegisterSessionNotification, wtsapi, 'WTSRegisterSessionNotification');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSRegisterSessionNotification]
- end;
- end;
- var
- _WTSUnRegisterSessionNot: Pointer;
- function WTSUnRegisterSessionNotification;
- begin
- GetProcedureAddress(_WTSUnRegisterSessionNot, wtsapi, 'WTSUnRegisterSessionNotification');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSUnRegisterSessionNot]
- end;
- end;
- var
- _WTSQueryUserToken: Pointer;
- function WTSQueryUserToken;
- begin
- GetProcedureAddress(_WTSQueryUserToken, wtsapi, 'WTSQueryUserToken');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_WTSQueryUserToken]
- end;
- end;
- {$ELSE}
- function WTSEnumerateServersA; external wtsapi name 'WTSEnumerateServersA';
- function WTSEnumerateServersW; external wtsapi name 'WTSEnumerateServersW';
- function WTSEnumerateServers; external wtsapi name 'WTSEnumerateServers' + AWSuffix;
- function WTSOpenServerA; external wtsapi name 'WTSOpenServerA';
- function WTSOpenServerW; external wtsapi name 'WTSOpenServerW';
- function WTSOpenServer; external wtsapi name 'WTSOpenServer' + AWSuffix;
- procedure WTSCloseServer; external wtsapi name 'WTSCloseServer';
- function WTSEnumerateSessionsA; external wtsapi name 'WTSEnumerateSessionsA';
- function WTSEnumerateSessionsW; external wtsapi name 'WTSEnumerateSessionsW';
- function WTSEnumerateSessions; external wtsapi name 'WTSEnumerateSessions' + AWSuffix;
- function WTSEnumerateProcessesA; external wtsapi name 'WTSEnumerateProcessesA';
- function WTSEnumerateProcessesW; external wtsapi name 'WTSEnumerateProcessesW';
- function WTSEnumerateProcesses; external wtsapi name 'WTSEnumerateProcesses' + AWSuffix;
- function WTSTerminateProcess; external wtsapi name 'WTSTerminateProcess';
- function WTSQuerySessionInformationA; external wtsapi name 'WTSQuerySessionInformationA';
- function WTSQuerySessionInformationW; external wtsapi name 'WTSQuerySessionInformationW';
- function WTSQuerySessionInformation; external wtsapi name 'WTSQuerySessionInformation' + AWSuffix;
- function WTSQueryUserConfigA; external wtsapi name 'WTSQueryUserConfigA';
- function WTSQueryUserConfigW; external wtsapi name 'WTSQueryUserConfigW';
- function WTSQueryUserConfig; external wtsapi name 'WTSQueryUserConfig' + AWSuffix;
- function WTSSetUserConfigA; external wtsapi name 'WTSSetUserConfigA';
- function WTSSetUserConfigW; external wtsapi name 'WTSSetUserConfigW';
- function WTSSetUserConfig; external wtsapi name 'WTSSetUserConfig' + AWSuffix;
- function WTSSendMessageA; external wtsapi name 'WTSSendMessageA';
- function WTSSendMessageW; external wtsapi name 'WTSSendMessageW';
- function WTSSendMessage; external wtsapi name 'WTSSendMessage' + AWSuffix;
- function WTSDisconnectSession; external wtsapi name 'WTSDisconnectSession';
- function WTSLogoffSession; external wtsapi name 'WTSLogoffSession';
- function WTSShutdownSystem; external wtsapi name 'WTSShutdownSystem';
- function WTSWaitSystemEvent; external wtsapi name 'WTSWaitSystemEvent';
- function WTSVirtualChannelOpen; external wtsapi name 'WTSVirtualChannelOpen';
- function WTSVirtualChannelClose; external wtsapi name 'WTSVirtualChannelClose';
- function WTSVirtualChannelRead; external wtsapi name 'WTSVirtualChannelRead';
- function WTSVirtualChannelWrite; external wtsapi name 'WTSVirtualChannelWrite';
- function WTSVirtualChannelPurgeInput; external wtsapi name 'WTSVirtualChannelPurgeInput';
- function WTSVirtualChannelPurgeOutput; external wtsapi name 'WTSVirtualChannelPurgeOutput';
- function WTSVirtualChannelQuery; external wtsapi name 'WTSVirtualChannelQuery';
- procedure WTSFreeMemory; external wtsapi name 'WTSFreeMemory';
- function WTSRegisterSessionNotification; external wtsapi name 'WTSRegisterSessionNotification';
- function WTSUnRegisterSessionNotification; external wtsapi name 'WTSUnRegisterSessionNotification';
- function WTSQueryUserToken; external wtsapi name 'WTSQueryUserToken';
- {$ENDIF DYNAMIC_LINK}
- end.
|