spiegel-keyman/common/windows/delphi/ext/jwa/Win32API/JwaRpcWinsta.pas
2022-06-06 08:13:37 +10:00

2315 lines
64 KiB
ObjectPascal

{******************************************************************************}
{ Windows API interface Unit for Object Pascal }
{ }
{ Portions created by Microsoft are Copyright (C) Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original Pascal code is: JwaRpcWinsta.pas, released April 2008. }
{ }
{ Portions created by Remko Weijnen are Copyright (C) 2008 }
{ Remko Weijnen. 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 }
{ }
{ This unit is currently not part of JwaWindows.pas and MUST be included by }
{ uses clause. To use this unit you must compile JwaWindows.pas with include }
{ mode. }
{$IFNDEF JWA_OMIT_SECTIONS}
unit JwaRpcWinsta;
interface
uses
// Using JwaWindows for now for easier testing (because of the new Include model)
// Should be JwaWinType
{$IFDEF JWA_WINDOWS}
JwaWindows;
{$ELSE}
JwaWinType, JwaBitFields, JwaWinNT;
{$ENDIF JWA_WINDOWS}
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_IMPLEMENTATIONSECTION}
{/// [MS-TSTS] specific defines }
const
WDPREFIX_LENGTH = 12;
STACK_ADDRESS_LENGTH = 128;
MAX_BR_NAME = 65;
DIRECTORY_LENGTH = 256;
INITIALPROGRAM_LENGTH = 256;
{$IFNDEF JWA_INCLUDEMODE}
AF_INET = 2; // internetwork: UDP, TCP, etc.
{$EXTERNALSYM AF_INET}
AF_INET6 = 23; // Internetwork Version 6
{$EXTERNALSYM AF_INET6}
USERNAME_LENGTH = 20;
DOMAIN_LENGTH = 17;
{$ENDIF JWA_INCLUDEMODE}
PASSWORD_LENGTH = 14;
NASISPECIFICNAME_LENGTH = 14;
NASIUSERNAME_LENGTH = 47;
NASIPASSWORD_LENGTH = 24;
NASISESSIONNAME_LENGTH = 16;
NASIFILESERVER_LENGTH = 47;
CLIENTDATANAME_LENGTH = 7;
{$IFNDEF JWA_INCLUDEMODE}
CLIENTNAME_LENGTH = 20;
CLIENTADDRESS_LENGTH = 30;
{$ENDIF JWA_INCLUDEMODE}
IMEFILENAME_LENGTH = 32;
CLIENTLICENSE_LENGTH = 32;
CLIENTMODEM_LENGTH = 40;
CLIENT_PRODUCT_ID_LENGTH = 32;
MAX_COUNTER_EXTENSIONS = 2; {/* actual value not known*/}
{$IFNDEF JWA_INCLUDEMODE}
WINSTATIONNAME_LENGTH = 32;
{$ENDIF JWA_INCLUDEMODE}
type
_SDCLASS = (
SdNone {= 0},
SdConsole,
SdNetwork );
SDCLASS = _SDCLASS;
TSDClass = _SDCLASS;
type
_FLOWCONTROLCLASS = (
FlowControl_None,
FlowControl_Hardware,
FlowControl_Software );
FLOWCONTROLCLASS = _FLOWCONTROLCLASS;
TFlowControlClass = _FLOWCONTROLCLASS;
type
_WINSTATIONSTATECLASS = (
State_Active {= 0},
State_Connected {= 1},
State_ConnectQuery {= 2},
State_Shadow {= 3},
State_Disconnected {= 4},
State_Idle {= 5},
State_Listen {= 6},
State_Reset {= 7},
State_Down {= 8},
State_Init {= 9 } );
WINSTATIONSTATECLASS = _WINSTATIONSTATECLASS;
TWinStationStateClass = _WINSTATIONSTATECLASS;
type
NASISPECIFICNAMEW = Array[0..NASISPECIFICNAME_LENGTH] of WCHAR;
NASISPECIFICNAMEA = Array[0..NASISPECIFICNAME_LENGTH] of AnsiChar;
NASIUSERNAMEW = Array[0..NASIUSERNAME_LENGTH] of WCHAR;
NASIUSERNAMEA = Array[0..NASIUSERNAME_LENGTH] of AnsiChar;
NASIPASSWORDW = Array[0..NASIPASSWORD_LENGTH] of WCHAR;
NASIPASSWORDA = Array[0..NASIPASSWORD_LENGTH] of AnsiChar;
NASISESSIONNAMEW = Array[0..NASISESSIONNAME_LENGTH] of WCHAR;
NASISESSIONNAMEA = Array[0..NASISESSIONNAME_LENGTH] of AnsiChar;
NASIFILESERVERW = Array[0..NASIFILESERVER_LENGTH] of WCHAR;
NASIFILESERVERA = Array[0..NASIFILESERVER_LENGTH] of AnsiChar;
CLIENTDATANAME = Array[0..CLIENTDATANAME_LENGTH] of AnsiChar;
PCLIENTDATANAME = PAnsiChar;
WINSTATIONNAMEW = Array[0..WINSTATIONNAME_LENGTH] of WCHAR;
WINSTATIONNAMEA = Array[0..WINSTATIONNAME_LENGTH] of AnsiChar;
type
_TS_SYSTEMTIME = record
wYear: USHORT;
wMonth: USHORT;
wDayOfWeek: USHORT;
wDay: USHORT;
wHour: USHORT;
wMinute: USHORT;
wSecond: USHORT;
wMilliseconds: USHORT;
end {_TS_SYSTEMTIME};
TS_SYSTEMTIME = _TS_SYSTEMTIME;
type
_TS_TIME_ZONE_INFORMATION = record
Bias: LongInt;
StandardName: Array[0..31] of WCHAR;
StandardDate: TS_SYSTEMTIME;
StandardBias: LongInt;
DaylightName: Array[0..31] of WCHAR;
DaylightDate: TS_SYSTEMTIME;
DaylightBias: LongInt;
end {_TS_TIME_ZONE_INFORMATION};
TS_TIME_ZONE_INFORMATION = _TS_TIME_ZONE_INFORMATION;
SESSION_FILTER = (
SF_SERVICES_SESSION_POPUP
);
const
PROTOCOL_CONSOLE = 0;
PROTOCOL_ICA = 1;
PROTOCOL_TSHARE = 2;
PROTOCOL_RDP = 2;
PDNAME_LENGTH = 32;
WDNAME_LENGTH = 32;
CDNAME_LENGTH = 32;
DEVICENAME_LENGTH = 128;
MODEMNAME_LENGTH = DEVICENAME_LENGTH;
CALLBACK_LENGTH = 50;
DLLNAME_LENGTH = 32;
WINSTATIONCOMMENT_LENGTH = 60;
MAX_LICENSE_SERVER_LENGTH = 1024;
LOGONID_CURRENT = DWORD(-1);
MAX_PDCONFIG = 10;
TERMSRV_TOTAL_SESSIONS = 1;
TERMSRV_DISC_SESSIONS = 2;
TERMSRV_RECON_SESSIONS = 3;
TERMSRV_CURRENT_ACTIVE_SESSIONS = 4;
TERMSRV_CURRENT_DISC_SESSIONS = 5;
TERMSRV_PENDING_SESSIONS = 6;
TERMSRV_SUCC_TOTAL_LOGONS = 7;
TERMSRV_SUCC_LOCAL_LOGONS = 8;
TERMSRV_SUCC_REMOTE_LOGONS = 9;
TERMSRV_SUCC_SESSION0_LOGONS = 10;
TERMSRV_CURRENT_TERMINATING_SESSIONS = 11;
TERMSRV_CURRENT_LOGGEDON_SESSIONS = 12;
NO_FALLBACK_DRIVERS = $0;
FALLBACK_BESTGUESS = $1;
FALLBACK_PCL = $2;
FALLBACK_PS = $3;
FALLBACK_PCLANDPS = $4;
{******************************** }
{ WinStationOpen access values }
{******************************** }
const
WINSTATION_QUERY = $00000001; {/* WinStationQueryInformation()*/}
WINSTATION_SET = $00000002; {/* WinStationSetInformation()*/}
WINSTATION_RESET = $00000004; {/* WinStationReset()*/}
WINSTATION_VIRTUAL = $00000008; {/* read/write direct data*/}
WINSTATION_SHADOW = $00000010; {/* WinStationShadow()*/}
WINSTATION_LOGON = $00000020; {/* logon to WinStation*/}
WINSTATION_LOGOFF = $00000040; {/* WinStationLogoff()*/}
WINSTATION_MSG = $00000080; {/* WinStationMsg()*/}
WINSTATION_CONNECT = $00000100; {/* WinStationConnect()*/}
WINSTATION_DISCONNECT = $00000200; {/* WinStationDisconnect()*/}
WINSTATION_GUEST_ACCESS = (WINSTATION_LOGON);
WINSTATION_CURRENT_GUEST_ACCESS = WINSTATION_VIRTUAL or WINSTATION_LOGOFF;
WINSTATION_USER_ACCESS = WINSTATION_GUEST_ACCESS or WINSTATION_QUERY or
WINSTATION_CONNECT;
WINSTATION_CURRENT_USER_ACCESS = WINSTATION_SET or WINSTATION_RESET or
WINSTATION_VIRTUAL or WINSTATION_LOGOFF or WINSTATION_DISCONNECT;
WINSTATION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED or
WINSTATION_QUERY or
WINSTATION_SET or
WINSTATION_RESET or
WINSTATION_VIRTUAL or
WINSTATION_SHADOW or
WINSTATION_LOGON or
WINSTATION_MSG or
WINSTATION_CONNECT or
WINSTATION_DISCONNECT;
type
PDNAMEW = Array[0..PDNAME_LENGTH] of WCHAR;
PPDNAMEW = PWCHAR;
PDNAMEA = Array[0..PDNAME_LENGTH] of AnsiChar;
PPDNAMEA = PAnsiChar;
{$IFDEF UNICODE}
PDNAME = PDNAMEW;
PPDNAME = PPDNAMEW;
{$ELSE}
PDNAME = PDNAMEA;
PPDNAME = PPDNAMEA;
{$ENDIF UNICODE}
{+//------------------------------------------------*/ }
type
WDNAMEW = Array[0..WDNAME_LENGTH] of WCHAR;
PWDNAMEW = PWCHAR;
WDNAMEA = Array[0..WDNAME_LENGTH] of AnsiChar;
PWDNAMEA = PAnsiChar;
{$IFDEF UNICODE}
WDNAME = WDNAMEW;
PWDNAME = PWDNAMEW;
{$ELSE}
WDNAME = WDNAMEA;
PWDNAME = PWDNAMEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
CDNAMEW = Array[0..CDNAME_LENGTH] of WCHAR;
PCDNAMEW = PWCHAR;
CDNAMEA = Array[0..CDNAME_LENGTH] of AnsiChar;
PCDNAMEA = PAnsiChar;
{$IFDEF UNICODE}
CDNAME = CDNAMEW;
PCDNAME = PCDNAMEW;
{$ELSE}
CDNAME = CDNAMEA;
PCDNAME = PCDNAMEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
DEVICENAMEW = Array[0..DEVICENAME_LENGTH] of WCHAR;
PDEVICENAMEW = PWCHAR;
DEVICENAMEA = Array[0..DEVICENAME_LENGTH] of AnsiChar;
PDEVICENAMEA = PAnsiChar;
{$IFDEF UNICODE}
DEVICENAME = DEVICENAMEW;
PDEVICENAME = PDEVICENAMEW;
{$ELSE}
DEVICENAME = DEVICENAMEA;
PDEVICENAME = PDEVICENAMEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
MODEMNAMEW = Array[0..MODEMNAME_LENGTH] of WCHAR;
PMODEMNAMEW = PWCHAR;
MODEMNAMEA = Array[0..MODEMNAME_LENGTH] of AnsiChar;
PMODEMNAMEA = PAnsiChar;
{$IFDEF UNICODE}
type
MODEMNAME = MODEMNAMEW;
PMODEMNAME = PMODEMNAMEW;
{$ELSE}
MODEMNAME = MODEMNAMEA;
PMODEMNAME = PMODEMNAMEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
DLLNAMEW = Array[0..DLLNAME_LENGTH] of WCHAR;
PDLLNAMEW = PWCHAR;
DLLNAMEA = Array[0..DLLNAME_LENGTH] of AnsiChar;
PDLLNAMEA = PAnsiChar;
{$IFDEF UNICODE}
DLLNAME = DLLNAMEW;
PDLLNAME = PDLLNAMEW;
{$ELSE}
DLLNAME = DLLNAMEA;
PDLLNAME = PDLLNAMEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
WDPREFIXW = Array[0..WDPREFIX_LENGTH] of WCHAR;
PWDPREFIXW = PWCHAR;
WDPREFIXA = Array[0..WDPREFIX_LENGTH] of AnsiChar;
PWDPREFIXA = PAnsiChar;
{$IFDEF UNICODE}
WDPREFIX = WDPREFIXW;
PWDPREFIX = PWDPREFIXW;
{$ELSE}
WDPREFIX = WDPREFIXA;
PWDPREFIX = PWDPREFIXA;
{$ENDIF /* UNICODE*/}
{+// }
{-* Stack address structure }
{= }
type
_CLIENT_STACK_ADDRESS = record
Address: Array[0..STACK_ADDRESS_LENGTH-1] of BYTE;
end {_CLIENT_STACK_ADDRESS};
CLIENT_STACK_ADDRESS = _CLIENT_STACK_ADDRESS;
PCLIENT_STACK_ADDRESS = ^_CLIENT_STACK_ADDRESS;
type
_TS_TRACE = record
TraceFile: Array[0..256-1] of WCHAR;
fDebugger: BOOLEAN;
fTimestamp: BOOLEAN;
TraceClass: ULONG;
TraceEnable: ULONG;
TraceOption: Array[0..64-1] of WCHAR;
end {_TS_TRACE};
TS_TRACE = _TS_TRACE;
PTS_TRACE = ^_TS_TRACE;
const
EXTENDED_USERNAME_LEN = 255;
EXTENDED_PASSWORD_LEN = 255;
EXTENDED_DOMAIN_LEN = 255;
type
_ExtendedClientCredentials = record
UserName: Array[0..EXTENDED_USERNAME_LEN] of WCHAR;
Password: Array[0..EXTENDED_PASSWORD_LEN] of WCHAR;
DOMAIN: Array[0..EXTENDED_DOMAIN_LEN] of WCHAR;
end {_ExtendedClientCredentials};
ExtendedClientCredentials = _ExtendedClientCredentials;
pExtendedClientCredentials = ^_ExtendedClientCredentials;
{+//******************************** }
{-* User Configuration structures }
{=******************************** }
type
APPLICATIONNAMEW = Array[0..MAX_BR_NAME] of WCHAR;
PAPPLICATIONNAMEW = PWCHAR;
APPLICATIONNAMEA = Array[0..MAX_BR_NAME] of AnsiChar;
PAPPLICATIONNAMEA = PAnsiChar;
{$IFDEF UNICODE}
APPLICATIONNAME = APPLICATIONNAMEW;
PAPPLICATIONNAME = PAPPLICATIONNAMEW;
{$ELSE}
APPLICATIONNAME = APPLICATIONNAMEA;
PAPPLICATIONNAME = PAPPLICATIONNAMEA;
{$ENDIF /* UNICODE*/}
{+// }
{-* Shadow options }
{= }
type
_SHADOWCLASS = (
Shadow_Disable,
Shadow_EnableInputNotify,
Shadow_EnableInputNoNotify,
Shadow_EnableNoInputNotify,
Shadow_EnableNoInputNoNotify );
SHADOWCLASS = _SHADOWCLASS;
TShadowClass = _SHADOWCLASS;
{+// }
{-* Callback options }
{= }
type
_CALLBACKCLASS = (
Callback_Disable,
Callback_Roving,
Callback_Fixed );
CALLBACKCLASS = _CALLBACKCLASS;
TCallBackClass = _CALLBACKCLASS;
type
_POLICY_TS_MACHINE = record
PolicyTsMachineFlags1: Set Of (
fPolicyDisableClip,
fPolicyDisableCam,
fPolicyDisableCcm,
fPolicyDisableLPT,
fPolicyDisableCpm,
fPolicyPromptForPassword,
fPolicyMaxInstanceCount,
fPolicyMinEncryptionLevel,
fPolicyFipsEnabled,
fPolicyDisableAutoReconnect,
fPolicyWFProfilePat,
fPolicyWFHomeDir,
fPolicyWFHomeDirDriv,
fPolicyDenyTSConnections,
fPolicyTempFoldersPerSession,
fPolicyDeleteTempFoldersOnExit,
fPolicyColorDepth,
fPolicySessionDirectoryActive,
fPolicySessionDirectoryLocation,
fPolicySessionDirectoryClusterName,
fPolicySessionDirectoryAdditionalParams,
fPolicySessionDirectoryExposeServerIP,
fPolicyPreventLicenseUpgrade,
fPolicySecureLicensing,
fPolicyWritableTSCCPermissionsTAB,
fPolicyDisableCdm,
fPolicyForceClientLptDef,
fPolicyShadow,
fPolicyResetBroken,
fPolicyReconnectSame,
fPolicyMaxSessionTime,
fPolicyMaxDisconnectionTime,
fPolicyMaxIdleTime,
fPolicyInitialProgram,
fPolicySingleSessionPerUser,
fPolicyDisableWallpaper,
fPolicyKeepAlive ,
fPolicyEnableTimeZoneRedirection,
fPolicyDisableForcibleLogoff,
fPolicyLicensingMode,
fPolicyExplicitLSDiscover,
fPolicyDisableTerminalServerTooltip,
fPolicyTsMachineDisableClip,
fPolicyTsMachineDisableCam,
fPolicyTsMachineDisableCcm,
fPolicyTsMachineDisableLPT,
fPolicyTsMachineDisableCpm,
fPolicyTsMachinePromptForPassword,
PolicyTSMachineColorDepth0, // ULONG ColorDepth: 3;
PolicyTSMachineColorDepth1,
PolicyTSMachineColorDepth2,
fDenyTSConnections,
fTempFoldersPerSession,
fDeleteTempFoldersOnExit,
fWritableTSCCPermissionsTAB,
fDisableCdm,
fPolicyTSMachineForceClientLptDef,
fPolicyTSMachineResetBroken,
fPolicyTSMachineReconnectSame,
fSingleSessionPerUser,
fDisableWallpaper,
fKeepAliveEnable,
fPreventLicenseUpgrade,
fSecureLicensing,
fEnableTimeZoneRedirection,
fTSPolicyMachineDisableAutoReconnect,
fDisableForcibleLogoff,
fPolicyEncryptRPCTraffic,
fEncryptRPCTraffic,
fPolicyTSMachineErrorInvalidProfile,
fFallbackPrintDriverType0, // ULONG FallbackPrintDriverType: 3;
fFallbackPrintDriverType1,
fFallbackPrintDriverType2,
fDisableTerminalServerTooltip,
{$IFDEF DELPHI6_UP}
_PolicyTsMachineFlags1Align = al96bit // align the bitset on 3 ULONG's
{$ELSE}
Bits_0_1,
Bits_0_2,
Bits_0_3,
Bits_0_4,
Bits_0_5,
Bits_0_6,
Bits_0_7,
Bits_0_8,
Bits_0_9,
Bits_0_10,
Bits_0_11,
Bits_0_12,
Bits_0_13,
Bits_0_14,
Bits_0_15,
Bits_0_16,
Bits_0_17,
Bits_0_18,
Bits_0_19,
Bits_0_20,
Bits_0_21,
Bits_0_22,
Bits_0_23,
Bits_0_24,
Bits_0_25,
Bits_0_26,
Bits_0_27,
Bits_0_28,
Bits_0_29,
Bits_0_30,
Bits_0_31,
Bits_0_32,
Bits_0_33,
Bits_0_34,
Bits_0_35,
Bits_0_36,
Bits_0_37,
Bits_0_38,
Bits_0_39,
Bits_0_40,
Bits_0_41,
Bits_0_42,
Bits_0_43,
Bits_0_44,
Bits_0_45,
Bits_0_46,
Bits_0_47,
Bits_0_48,
Bits_0_49,
Bits_0_50,
Bits_0_51,
Bits_0_52,
Bits_0_53,
Bits_0_54,
Bits_0_55,
Bits_0_56,
Bits_0_57,
Bits_0_58,
Bits_0_59,
Bits_0_60,
Bits_0_61,
Bits_0_62,
Bits_0_63,
Bits_0_64,
Bits_0_65,
Bits_0_66,
Bits_0_67,
Bits_0_68,
Bits_0_69,
Bits_0_70,
Bits_0_71,
Bits_0_72,
Bits_0_73,
Bits_0_74,
Bits_0_75,
Bits_0_76,
Bits_0_77,
Bits_0_78,
Bits_0_79,
Bits_0_80,
Bits_0_81,
Bits_0_82,
Bits_0_83,
Bits_0_84,
Bits_0_85,
Bits_0_86,
Bits_0_87,
Bits_0_88,
Bits_0_89,
Bits_0_90,
Bits_0_91,
Bits_0_92,
Bits_0_93,
Bits_0_94,
Bits_0_95,
Bits_0_96
{$ENDIF}
);
bSecurityLayer: Boolean;
PolicyTsMachineFlag2: Set Of (
fPolicySecurityLayer,
{$IFDEF DELPHI6_UP}
_PolicyTsMachineFlags2Align = al32bit // align the bitset on ULONG
{$ELSE}
_PolicyTsMachineFlags2Align1,
_PolicyTsMachineFlags2Align2,
_PolicyTsMachineFlags2Align3,
_PolicyTsMachineFlags2Align4,
_PolicyTsMachineFlags2Align5,
_PolicyTsMachineFlags2Align6,
_PolicyTsMachineFlags2Align7,
_PolicyTsMachineFlags2Align8,
_PolicyTsMachineFlags2Align9,
_PolicyTsMachineFlags2Align10,
_PolicyTsMachineFlags2Align11,
_PolicyTsMachineFlags2Align12,
_PolicyTsMachineFlags2Align13,
_PolicyTsMachineFlags2Align14,
_PolicyTsMachineFlags2Align15,
_PolicyTsMachineFlags2Align16,
_PolicyTsMachineFlags2Align17,
_PolicyTsMachineFlags2Align18,
_PolicyTsMachineFlags2Align19,
_PolicyTsMachineFlags2Align20,
_PolicyTsMachineFlags2Align21,
_PolicyTsMachineFlags2Align22,
_PolicyTsMachineFlags2Align23,
_PolicyTsMachineFlags2Align24,
_PolicyTsMachineFlags2Align25,
_PolicyTsMachineFlags2Align26,
_PolicyTsMachineFlags2Align27,
_PolicyTsMachineFlags2Align28,
_PolicyTsMachineFlags2Align29,
_PolicyTsMachineFlags2Align30,
_PolicyTsMachineFlags2Align31,
_PolicyTsMachineFlags2Align32
{$ENDIF}
);
bUserAuthentication: Boolean;
PolicyTsMachineFlags3: Set Of (
fPolicyUserAuthentication,
fPolicyTurnOffSingleAppMode,
fTurnOffSingleAppMode,
fDisablePNPPolicyIsEnforced,
fDisablePNPPolicyValue,
{$IFDEF DELPHI6_UP}
_PolicyTsMachineFlags3Align = al32bit // align the bitset on ULONG
{$ELSE}
_PolicyTsMachineFlags3Align1,
_PolicyTsMachineFlags3Align2,
_PolicyTsMachineFlags3Align3,
_PolicyTsMachineFlags3Align4,
_PolicyTsMachineFlags3Align5,
_PolicyTsMachineFlags3Align6,
_PolicyTsMachineFlags3Align7,
_PolicyTsMachineFlags3Align8,
_PolicyTsMachineFlags3Align9,
_PolicyTsMachineFlags3Align10,
_PolicyTsMachineFlags3Align11,
_PolicyTsMachineFlags3Align12,
_PolicyTsMachineFlags3Align13,
_PolicyTsMachineFlags3Align14,
_PolicyTsMachineFlags3Align15,
_PolicyTsMachineFlags3Align16,
_PolicyTsMachineFlags3Align17,
_PolicyTsMachineFlags3Align18,
_PolicyTsMachineFlags3Align19,
_PolicyTsMachineFlags3Align20,
_PolicyTsMachineFlags3Align21,
_PolicyTsMachineFlags3Align22,
_PolicyTsMachineFlags3Align23,
_PolicyTsMachineFlags3Align24,
_PolicyTsMachineFlags3Align25,
_PolicyTsMachineFlags3Align26,
_PolicyTsMachineFlags3Align27,
_PolicyTsMachineFlags3Align28,
_PolicyTsMachineFlags3Align29,
_PolicyTsMachineFlags3Align30,
_PolicyTsMachineFlags3Align31,
_PolicyTsMachineFlags3Align32
{$ENDIF}
);
MaxInstanceCount: ULONG;
LicensingMode: ULONG;
MinEncryptionLevel: BYTE;
WFProfilePath: Array[0..DIRECTORY_LENGTH] of WCHAR;
WFHomeDir: Array[0..DIRECTORY_LENGTH] of WCHAR;
WFHomeDirDrive: Array[0..3] of WCHAR;
SessionDirectoryActive: ULONG;
SessionDirectoryLocation: Array[0..DIRECTORY_LENGTH] of WCHAR;
SessionDirectoryClusterName: Array[0..DIRECTORY_LENGTH] of WCHAR;
SessionDirectoryAdditionalParams: Array[0..DIRECTORY_LENGTH] of WCHAR;
SessionDirectoryExposeServerIP: ULONG;
KeepAliveInterval: ULONG;
Shadow: _SHADOWCLASS;
MaxConnectionTime: ULONG;
MaxDisconnectionTime: ULONG;
MaxIdleTime: ULONG;
WorkDirectory: Array[0..DIRECTORY_LENGTH] of WCHAR;
InitialProgram: Array[0..INITIALPROGRAM_LENGTH] of WCHAR;
LicenseServers: Array[0..MAX_LICENSE_SERVER_LENGTH] of WCHAR;
__Alignment4: ULONG; // Need to align at 8 byte boundary
end {_POLICY_TS_MACHINE};
POLICY_TS_MACHINE = _POLICY_TS_MACHINE;
PPOLICY_TS_MACHINE = ^_POLICY_TS_MACHINE;
TPolicyTSMachine = _POLICY_TS_MACHINE;
PPolicyTSMachine = PPOLICY_TS_MACHINE;
{+// }
{-* User Configuration data }
{= }
type
TUserConfigFlags = Set Of(
fInheritAutoLogon, //: 1
fInheritResetBroken, //: 1
fInheritReconnectSame, //: 1
fInheritInitialProgram, //: 1
fInheritCallback, //: 1
fInheritCallbackNumber, //: 1
fInheritShadow, //: 1
fInheritMaxSessionTime, //: 1
fInheritMaxDisconnectionTime, //: 1
fInheritMaxIdleTime, //: 1
fInheritAutoClient, //: 1
fInheritSecurity, //: 1
fUserConfigPromptForPassword, //: 1
fUserConfigResetBroken, //: 1
fUserConfigReconnectSame, //: 1
fLogonDisabled, //: 1
fWallPaperDisabled, //: 1
fAutoClientDrives, //: 1
fAutoClientLpts, //: 1
fUserConfigForceClientLptDef, //: 1
fRequireEncryption, //: 1
fDisableEncryption, //: 1
fUnused1, //: 1
fHomeDirectoryMapRoot, //: 1
fUseDefaultGina, //: 1
fCursorBlinkDisabled, //: 1
fPublishedApp, //: 1
fHideTitleBar, //: 1
fMaximize, //: 1
fUserConfigDisableCpm, //: 1
fUserConfigDisableCdm, //: 1
fUserConfigDisableCcm, //: 1
fUserConfigDisableLPT, //: 1
fUserConfigDisableClip, //: 1
fDisableExe, //: 1
fUserConfigfDisableCam, //: 1
fUserConfigDisableAutoReconnect, //: 1
UserConfigColorDepth0, //: 3
UserConfigColorDepth1,
UserConfigColorDepth2,
fInheritColorDepth, //: 1
fUserConfigErrorInvalidProfile, //: 1
fPasswordIsScPin, //: 1
fDisablePNPRedir, //: 1
{$IFDEF DELPHI6_UP}
_TUserConfigFlagsAlign = al64Bit
{$ELSE}
_TUserConfigFlagsAlign1,
_TUserConfigFlagsAlign2,
_TUserConfigFlagsAlign3,
_TUserConfigFlagsAlign4,
_TUserConfigFlagsAlign5,
_TUserConfigFlagsAlign6,
_TUserConfigFlagsAlign7,
_TUserConfigFlagsAlign8,
_TUserConfigFlagsAlign9,
_TUserConfigFlagsAlign10,
_TUserConfigFlagsAlign11,
_TUserConfigFlagsAlign12,
_TUserConfigFlagsAlign13,
_TUserConfigFlagsAlign14,
_TUserConfigFlagsAlign15,
_TUserConfigFlagsAlign16,
_TUserConfigFlagsAlign17,
_TUserConfigFlagsAlign18,
_TUserConfigFlagsAlign19,
_TUserConfigFlagsAlign20,
_TUserConfigFlagsAlign21,
_TUserConfigFlagsAlign22,
_TUserConfigFlagsAlign23,
_TUserConfigFlagsAlign24,
_TUserConfigFlagsAlign25,
_TUserConfigFlagsAlign26,
_TUserConfigFlagsAlign27,
_TUserConfigFlagsAlign28,
_TUserConfigFlagsAlign29,
_TUserConfigFlagsAlign30,
_TUserConfigFlagsAlign31,
_TUserConfigFlagsAlign32,
_TUserConfigFlagsAlign33,
_TUserConfigFlagsAlign34,
_TUserConfigFlagsAlign35,
_TUserConfigFlagsAlign36,
_TUserConfigFlagsAlign37,
_TUserConfigFlagsAlign38,
_TUserConfigFlagsAlign39,
_TUserConfigFlagsAlign40,
_TUserConfigFlagsAlign41,
_TUserConfigFlagsAlign42,
_TUserConfigFlagsAlign43,
_TUserConfigFlagsAlign44,
_TUserConfigFlagsAlign45,
_TUserConfigFlagsAlign46,
_TUserConfigFlagsAlign47,
_TUserConfigFlagsAlign48,
_TUserConfigFlagsAlign49,
_TUserConfigFlagsAlign50,
_TUserConfigFlagsAlign51,
_TUserConfigFlagsAlign52,
_TUserConfigFlagsAlign53,
_TUserConfigFlagsAlign54,
_TUserConfigFlagsAlign55,
_TUserConfigFlagsAlign56,
_TUserConfigFlagsAlign57,
_TUserConfigFlagsAlign58,
_TUserConfigFlagsAlign59,
_TUserConfigFlagsAlign60,
_TUserConfigFlagsAlign61,
_TUserConfigFlagsAlign62,
_TUserConfigFlagsAlign63,
_TUserConfigFlagsAlign64
{$ENDIF}
);
_USERCONFIGW = record
Flags: TUserConfigFlags;
UserName: Array[0..USERNAME_LENGTH] of WCHAR;
Domain: Array[0..DOMAIN_LENGTH] of WCHAR;
Password: Array[0..PASSWORD_LENGTH] of WCHAR;
WorkDirectory: Array[0..DIRECTORY_LENGTH] of WCHAR;
InitialProgram: Array[0..INITIALPROGRAM_LENGTH] of WCHAR;
CallbackNumber: Array[0..CALLBACK_LENGTH] of WCHAR;
Callback: CALLBACKCLASS;
Shadow: SHADOWCLASS;
MaxConnectionTime: ULONG;
MaxDisconnectionTime: ULONG;
MaxIdleTime: ULONG;
KeyboardLayout: ULONG;
MinEncryptionLevel: BYTE;
NWLogonServer: Array[0..NASIFILESERVER_LENGTH] of WCHAR;
PublishedName: APPLICATIONNAMEW;
WFProfilePath: Array[0..DIRECTORY_LENGTH] of WCHAR;
WFHomeDir: Array[0..DIRECTORY_LENGTH] of WCHAR;
WFHomeDirDrive: Array[0..3] of WCHAR;
_Align: DWORD;
end {_USERCONFIGW};
USERCONFIGW = _USERCONFIGW;
PUSERCONFIGW = ^_USERCONFIGW;
TUserConfigW = _USERCONFIGW;
type
_USERCONFIGA = record
Flags: TUserConfigFlags;
UserName: Array[0..USERNAME_LENGTH] of AnsiChar;
Domain: Array[0..DOMAIN_LENGTH] of AnsiChar;
Password: Array[0..PASSWORD_LENGTH] of AnsiChar;
WorkDirectory: Array[0..DIRECTORY_LENGTH] of AnsiChar;
InitialProgram: Array[0..INITIALPROGRAM_LENGTH] of AnsiChar;
CallbackNumber: Array[0..CALLBACK_LENGTH] of AnsiChar;
Callback: CALLBACKCLASS;
Shadow: SHADOWCLASS;
MaxConnectionTime: ULONG;
MaxDisconnectionTime: ULONG;
MaxIdleTime: ULONG;
KeyboardLayout: ULONG;
MinEncryptionLevel: BYTE;
NWLogonServer: Array[0..NASIFILESERVER_LENGTH] of AnsiChar;
PublishedName: APPLICATIONNAMEA;
WFProfilePath: Array[0..DIRECTORY_LENGTH] of AnsiChar;
WFHomeDir: Array[0..DIRECTORY_LENGTH] of AnsiChar;
WFHomeDirDrive: Array[0..3] of AnsiChar;
end {_USERCONFIGA};
USERCONFIGA = _USERCONFIGA;
PUSERCONFIGA = ^_USERCONFIGA;
TUserConfigA = _USERCONFIGA;
{$IFDEF UNICODE}
type
USERCONFIG = USERCONFIGW;
PUSERCONFIG = PUSERCONFIGW;
{$ELSE}
type
USERCONFIG = USERCONFIGA;
PUSERCONFIG = PUSERCONFIGA;
{$ENDIF /* UNICODE*/}
{+//***************** }
{-* PD structures }
{=***************** }
type
_PDCONFIG2W = record
PdName: PDNAMEW;
SdClass: SDCLASS;
PdDLL: DLLNAMEW;
PdFlag: ULONG;
OutBufLength: ULONG;
OutBufCount: ULONG;
OutBufDelay: ULONG;
InteractiveDelay: ULONG;
PortNumber: ULONG;
KeepAliveTimeout: ULONG;
end {_PDCONFIG2W};
PDCONFIG2W = _PDCONFIG2W;
PPDCONFIG2W = ^_PDCONFIG2W;
type
_PDCONFIG2A = record
PdName: PDNAMEA;
SdClass: SDCLASS;
PdDLL: DLLNAMEA;
PdFlag: ULONG;
OutBufLength: ULONG;
OutBufCount: ULONG;
OutBufDelay: ULONG;
InteractiveDelay: ULONG;
PortNumber: ULONG;
KeepAliveTimeout: ULONG;
end {_PDCONFIG2A};
PDCONFIG2A = _PDCONFIG2A;
PPDCONFIG2A = ^_PDCONFIG2A;
{+// }
{-* PdFlag defines }
{= }
const
PD_UNUSED = $00000001;
PD_RELIABLE = $00000002;
PD_FRAME = $00000004;
PD_CONNECTION = $00000008;
PD_CONSOLE = $00000010;
PD_LANA = $00000020;
PD_TRANSPORT = $00000040;
PD_SINGLE_INST = $00000080;
PD_NOLOW_WATERMARK = $00000100;
{$IFDEF UNICODE}
type
PDCONFIG2 = PDCONFIG2W;
PPDCONFIG2 = PPDCONFIG2W;
{$ELSE}
type
PDCONFIG2 = PDCONFIG2A;
PPDCONFIG2 = PPDCONFIG2A;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_RECEIVEFLOWCONTROLCLASS = (
ReceiveFlowControl_None,
ReceiveFlowControl_RTS,
ReceiveFlowControl_DTR );
RECEIVEFLOWCONTROLCLASS = _RECEIVEFLOWCONTROLCLASS;
TReceiveFlowControlClass = _RECEIVEFLOWCONTROLCLASS;
type
_TRANSMITFLOWCONTROLCLASS = (
TransmitFlowControl_None,
TransmitFlowControl_CTS,
TransmitFlowControl_DSR );
TRANSMITFLOWCONTROLCLASS = _TRANSMITFLOWCONTROLCLASS;
TTransmitFlowControlClass = _TRANSMITFLOWCONTROLCLASS;
type
_FLOWCONTROLCONFIG = record
FlowControlFlags: Set Of (
fEnableSoftwareTx, //: 1
fEnableSoftwareRx, //: 1
fEnableDTR, //: 1
fEnableRTS, //: 1
{$IFDEF DELPHI6_UP}
_FlowControlFlagsAlign = al32Bit
{$ELSE}
_FlowControlFlagsAlign1,
_FlowControlFlagsAlign2,
_FlowControlFlagsAlign3,
_FlowControlFlagsAlign4,
_FlowControlFlagsAlign5,
_FlowControlFlagsAlign6,
_FlowControlFlagsAlign7,
_FlowControlFlagsAlign8,
_FlowControlFlagsAlign9,
_FlowControlFlagsAlign10,
_FlowControlFlagsAlign11,
_FlowControlFlagsAlign12,
_FlowControlFlagsAlign13,
_FlowControlFlagsAlign14,
_FlowControlFlagsAlign15,
_FlowControlFlagsAlign16,
_FlowControlFlagsAlign17,
_FlowControlFlagsAlign18,
_FlowControlFlagsAlign19,
_FlowControlFlagsAlign20,
_FlowControlFlagsAlign21,
_FlowControlFlagsAlign22,
_FlowControlFlagsAlign23,
_FlowControlFlagsAlign24,
_FlowControlFlagsAlign25,
_FlowControlFlagsAlign26,
_FlowControlFlagsAlign27,
_FlowControlFlagsAlign28,
_FlowControlFlagsAlign29,
_FlowControlFlagsAlign30,
_FlowControlFlagsAlign31,
_FlowControlFlagsAlign32
{$ENDIF}
);
XonChar: AnsiChar;
XoffChar: AnsiChar;
Type_: FLOWCONTROLCLASS;
HardwareReceive: RECEIVEFLOWCONTROLCLASS;
HardwareTransmit: TRANSMITFLOWCONTROLCLASS;
end {_FLOWCONTROLCONFIG};
FLOWCONTROLCONFIG = _FLOWCONTROLCONFIG;
PFLOWCONTROLCONFIG = ^_FLOWCONTROLCONFIG;
TFlowControlConfig = _FLOWCONTROLCONFIG;
type
_ASYNCCONNECTCLASS = (
Connect_CTS,
Connect_DSR,
Connect_RI,
Connect_DCD,
Connect_FirstChar,
Connect_Perm );
ASYNCCONNECTCLASS = _ASYNCCONNECTCLASS;
TAsyncConnectClass = _ASYNCCONNECTCLASS;
type
_CONNECTCONFIG = record
Type_: ASYNCCONNECTCLASS;
ConnectConfigFlags: Set Of (
fEnableBreakDisconnect,
{$IFDEF DELPHI6}
_ConnectConfigFlagsAlign = al32Bit
{$ELSE}
_ConnectConfigFlagsAlign1,
_ConnectConfigFlagsAlign2,
_ConnectConfigFlagsAlign3,
_ConnectConfigFlagsAlign4,
_ConnectConfigFlagsAlign5,
_ConnectConfigFlagsAlign6,
_ConnectConfigFlagsAlign7,
_ConnectConfigFlagsAlign8,
_ConnectConfigFlagsAlign9,
_ConnectConfigFlagsAlign10,
_ConnectConfigFlagsAlign11,
_ConnectConfigFlagsAlign12,
_ConnectConfigFlagsAlign13,
_ConnectConfigFlagsAlign14,
_ConnectConfigFlagsAlign15,
_ConnectConfigFlagsAlign16,
_ConnectConfigFlagsAlign17,
_ConnectConfigFlagsAlign18,
_ConnectConfigFlagsAlign19,
_ConnectConfigFlagsAlign20,
_ConnectConfigFlagsAlign21,
_ConnectConfigFlagsAlign22,
_ConnectConfigFlagsAlign23,
_ConnectConfigFlagsAlign24,
_ConnectConfigFlagsAlign25,
_ConnectConfigFlagsAlign26,
_ConnectConfigFlagsAlign27,
_ConnectConfigFlagsAlign28,
_ConnectConfigFlagsAlign29,
_ConnectConfigFlagsAlign30,
_ConnectConfigFlagsAlign31,
_ConnectConfigFlagsAlign32
{$ENDIF}
);
end {_CONNECTCONFIG};
CONNECTCONFIG = _CONNECTCONFIG;
PCONNECTCONFIG = ^_CONNECTCONFIG;
TConnectConfig = _CONNECTCONFIG;
{+//------------------------------------------------*/ }
type
TASyncConfigFlags = Set of (
fEnableDsrSensitivity,
fConnectionDriver,
{$IFDEF DELPHI6_UP}
_TASyncConfigFlagsAlign = al32Bit
{$ELSE}
_TASyncConfigFlagsAlign1,
_TASyncConfigFlagsAlign2,
_TASyncConfigFlagsAlign3,
_TASyncConfigFlagsAlign4,
_TASyncConfigFlagsAlign5,
_TASyncConfigFlagsAlign6,
_TASyncConfigFlagsAlign7,
_TASyncConfigFlagsAlign8,
_TASyncConfigFlagsAlign9,
_TASyncConfigFlagsAlign10,
_TASyncConfigFlagsAlign11,
_TASyncConfigFlagsAlign12,
_TASyncConfigFlagsAlign13,
_TASyncConfigFlagsAlign14,
_TASyncConfigFlagsAlign15,
_TASyncConfigFlagsAlign16,
_TASyncConfigFlagsAlign17,
_TASyncConfigFlagsAlign18,
_TASyncConfigFlagsAlign19,
_TASyncConfigFlagsAlign20,
_TASyncConfigFlagsAlign21,
_TASyncConfigFlagsAlign22,
_TASyncConfigFlagsAlign23,
_TASyncConfigFlagsAlign24,
_TASyncConfigFlagsAlign25,
_TASyncConfigFlagsAlign26,
_TASyncConfigFlagsAlign27,
_TASyncConfigFlagsAlign28,
_TASyncConfigFlagsAlign29,
_TASyncConfigFlagsAlign30,
_TASyncConfigFlagsAlign31,
_TASyncConfigFlagsAlign32,
_TASyncConfigFlagsAlign33,
_TASyncConfigFlagsAlign34,
_TASyncConfigFlagsAlign35,
_TASyncConfigFlagsAlign36,
_TASyncConfigFlagsAlign37,
_TASyncConfigFlagsAlign38,
_TASyncConfigFlagsAlign39,
_TASyncConfigFlagsAlign40,
_TASyncConfigFlagsAlign41,
_TASyncConfigFlagsAlign42,
_TASyncConfigFlagsAlign43,
_TASyncConfigFlagsAlign44,
_TASyncConfigFlagsAlign45,
_TASyncConfigFlagsAlign46,
_TASyncConfigFlagsAlign47,
_TASyncConfigFlagsAlign48,
_TASyncConfigFlagsAlign49,
_TASyncConfigFlagsAlign50,
_TASyncConfigFlagsAlign51,
_TASyncConfigFlagsAlign52,
_TASyncConfigFlagsAlign53,
_TASyncConfigFlagsAlign54,
_TASyncConfigFlagsAlign55,
_TASyncConfigFlagsAlign56,
_TASyncConfigFlagsAlign57,
_TASyncConfigFlagsAlign58,
_TASyncConfigFlagsAlign59,
_TASyncConfigFlagsAlign60,
_TASyncConfigFlagsAlign61,
_TASyncConfigFlagsAlign62,
_TASyncConfigFlagsAlign63,
_TASyncConfigFlagsAlign64
{$ENDIF}
);
_ASYNCCONFIGW = record
DeviceName: DEVICENAMEW;
ModemName: MODEMNAMEW;
BaudRate: ULONG;
Parity: ULONG;
StopBits: ULONG;
ByteSize: ULONG;
ASyncConfigFlags: TASyncConfigFlags;
FlowControl: FLOWCONTROLCONFIG;
Connect: CONNECTCONFIG;
end {_ASYNCCONFIGW};
ASYNCCONFIGW = _ASYNCCONFIGW;
PASYNCCONFIGW = ^_ASYNCCONFIGW;
TAsyncConfigW = _ASYNCCONFIGW;
type
_ASYNCCONFIGA = record
DeviceName: DEVICENAMEA;
ModemName: MODEMNAMEA;
BaudRate: ULONG;
Parity: ULONG;
StopBits: ULONG;
ByteSize: ULONG;
ASyncConfigFlags: TASyncConfigFlags;
FlowControl: FLOWCONTROLCONFIG;
Connect: CONNECTCONFIG;
end {_ASYNCCONFIGA};
ASYNCCONFIGA = _ASYNCCONFIGA;
PASYNCCONFIGA = ^_ASYNCCONFIGA;
TAsyncConfigA = _ASYNCCONFIGA;
{$IFDEF UNICODE}
type
ASYNCCONFIG = ASYNCCONFIGW;
PASYNCCONFIG = PASYNCCONFIGW;
{$ELSE}
type
ASYNCCONFIG = ASYNCCONFIGA;
PASYNCCONFIG = PASYNCCONFIGA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_NETWORKCONFIGW = record
LanAdapter: LongInt;
NetworkName: DEVICENAMEW;
Flags: ULONG;
end {_NETWORKCONFIGW};
NETWORKCONFIGW = _NETWORKCONFIGW;
PNETWORKCONFIGW = ^_NETWORKCONFIGW;
TNetworkConfigW = _NETWORKCONFIGW;
type
_NETWORKCONFIGA = record
LanAdapter: LongInt;
NetworkName: DEVICENAMEA;
Flags: ULONG;
end {_NETWORKCONFIGA};
NETWORKCONFIGA = _NETWORKCONFIGA;
PNETWORKCONFIGA = ^_NETWORKCONFIGA;
TNetworkConfigA = _NETWORKCONFIGA;
const
NETWORK_CLIENT = $00000001;
{$IFDEF UNICODE}
type
NETWORKCONFIG = NETWORKCONFIGW;
PNETWORKCONFIG = PNETWORKCONFIGW;
{$ELSE}
type
NETWORKCONFIG = NETWORKCONFIGA;
PNETWORKCONFIG = PNETWORKCONFIGA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_NASICONFIGW = record
SpecificName: NASISPECIFICNAMEW;
UserName: NASIUSERNAMEW;
PassWord: NASIPASSWORDW;
SessionName: NASISESSIONNAMEW; // Error in winsta.h NASISESIONNAMEW
FileServer: NASIFILESERVERW;
GlobalSession: BOOLEAN;
end {_NASICONFIGW};
NASICONFIGW = _NASICONFIGW;
PNASICONFIGW = ^_NASICONFIGW;
type
_NASICONFIGA = record
SpecificName: NASISPECIFICNAMEA;
UserName: NASIUSERNAMEA;
PassWord: NASIPASSWORDA;
SessionName: NASISESSIONNAMEA; // Error in winsta.h NASISESIONNAMEW
FileServer: NASIFILESERVERA;
GlobalSession: BOOLEAN;
end {_NASICONFIGA};
NASICONFIGA = _NASICONFIGA;
PNASICONFIGA = ^_NASICONFIGA;
{$IFDEF UNICODE}
type
NASICONFIG = NASICONFIGW;
PNASICONFIG = PNASICONFIGW;
{$ELSE}
type
NASICONFIG = NASICONFIGA;
PNASICONFIG = PNASICONFIGA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_OEMTDCONFIGW = record
Adapter: LongInt;
DeviceName: DEVICENAMEW;
Flags: ULONG;
end {_OEMTDCONFIGW};
OEMTDCONFIGW = _OEMTDCONFIGW;
POEMTDCONFIGW = ^_OEMTDCONFIGW;
type
_OEMTDCONFIGA = record
Adapter: LongInt;
DeviceName: DEVICENAMEA;
Flags: ULONG;
end {_OEMTDCONFIGA};
OEMTDCONFIGA = _OEMTDCONFIGA;
POEMTDCONFIGA = ^_OEMTDCONFIGA;
{$IFDEF UNICODE}
type
OEMTDCONFIG = OEMTDCONFIGW;
POEMTDCONFIG = POEMTDCONFIGW;
{$ELSE}
type
OEMTDCONFIG = OEMTDCONFIGA;
POEMTDCONFIG = POEMTDCONFIGA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_PDPARAMSW = record
SdClass: SDCLASS;
case integer of
1: (Network: NETWORKCONFIGW);
2: (Async: ASYNCCONFIGW);
3: (Nasi: NASICONFIGW);
4: (OemTd: OEMTDCONFIGW);
end {_PDPARAMSW};
PDPARAMSW = _PDPARAMSW;
PPDPARAMSW = ^_PDPARAMSW;
type
_PDPARAMSA = record
SdClass: SDCLASS;
case integer of
1: (Network: NETWORKCONFIGA);
2: (Async: ASYNCCONFIGA);
3: (Nasi: NASICONFIGA);
4: (OemTd: OEMTDCONFIGA);
end {_PDPARAMSA};
PDPARAMSA = _PDPARAMSA;
PPDPARAMSA = ^_PDPARAMSA;
{$IFDEF UNICODE}
type
PDPARAMS = PDPARAMSW;
PPDPARAMS = PPDPARAMSW;
{$ELSE}
type
PDPARAMS = PDPARAMSA;
PPDPARAMS = PPDPARAMSA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_PDCONFIGW = record
Create_: PDCONFIG2W;
Params: PDPARAMSW;
end {_PDCONFIGW};
PDCONFIGW = _PDCONFIGW;
PPDCONFIGW = ^_PDCONFIGW;
type
_PDCONFIGA = record
Create_: PDCONFIG2A;
Params: PDPARAMSA;
end {_PDCONFIGA};
PDCONFIGA = _PDCONFIGA;
PPDCONFIGA = ^_PDCONFIGA;
{$IFDEF UNICODE}
type
PDCONFIG = PDCONFIGW;
PPDCONFIG = PPDCONFIGW;
{$ELSE}
type
PDCONFIG = PDCONFIGA;
PPDCONFIG = PPDCONFIGA;
{$ENDIF /* UNICODE*/}
{+//********************** }
{-* Wd structures }
{=********************** }
type
_WDCONFIGW = record
WdName: WDNAMEW;
WdDLL: DLLNAMEW;
WsxDLL: DLLNAMEW;
WdFlag: ULONG;
WdInputBufferLength: ULONG;
CfgDLL: DLLNAMEW;
WdPrefix: WDPREFIXW;
end {_WDCONFIGW};
WDCONFIGW = _WDCONFIGW;
PWDCONFIGW = ^_WDCONFIGW;
type
_WDCONFIGA = record
WdName: WDNAMEA;
WdDLL: DLLNAMEA;
WsxDLL: DLLNAMEA;
WdFlag: ULONG;
WdInputBufferLength: ULONG;
CfgDLL: DLLNAMEA;
WdPrefix: WDPREFIXA;
end {_WDCONFIGA};
WDCONFIGA = _WDCONFIGA;
PWDCONFIGA = ^_WDCONFIGA;
{+// }
{-* WdFlag defines }
{= }
const
WDF_UNUSED = $00000001;
WDF_SHADOW_SOURCE = $00000002;
WDF_SHADOW_TARGET = $00000004;
WDF_OTHER = $00000008;
WDF_TSHARE = $00000010;
WDF_DYNAMIC_RECONNECT = $00000020;
WDF_USER_VCIOCTL = $00000040;
WDF_SUBDESKTOP = $00008000;
{$IFDEF UNICODE}
type
WDCONFIG = WDCONFIGW;
PWDCONFIG = PWDCONFIGW;
{$ELSE}
type
WDCONFIG = WDCONFIGA;
PWDCONFIG = PWDCONFIGA;
{$ENDIF /* UNICODE*/}
{+//************************************* }
{-* Connection Driver structures (CD) }
{=************************************* }
{+// }
{-* connection driver classes }
{= }
type
_CDCLASS = (
CdNone,
CdModem,
CdClass_Maximum );
CDCLASS = _CDCLASS;
TCDClass = _CDCLASS;
{+//------------------------------------------------*/ }
type
_CDCONFIGW = record
CdClass: CDCLASS;
CdName: CDNAMEW;
CdDLL: DLLNAMEW;
CdFlag: ULONG;
end {_CDCONFIGW};
CDCONFIGW = _CDCONFIGW;
PCDCONFIGW = ^_CDCONFIGW;
type
_CDCONFIGA = record
CdClass: CDCLASS;
CdName: CDNAMEA;
CdDLL: DLLNAMEA;
CdFlag: ULONG;
end {_CDCONFIGA};
CDCONFIGA = _CDCONFIGA;
PCDCONFIGA = ^_CDCONFIGA;
{$IFDEF UNICODE}
type
CDCONFIG = CDCONFIGW;
PCDCONFIG = PCDCONFIGW;
{$ELSE}
type
CDCONFIG = CDCONFIGA;
PCDCONFIG = PCDCONFIGA;
{$ENDIF /* UNICODE*/}
{+//**************************** }
{-* Window Station structures }
{=**************************** }
type
TWinStationCreateFlags = Set Of (
fEnableWinStation,
{$IFDEF DELPHI6_UP}
_TWinStationCreateFlagsAlign = al32Bit
{$ELSE}
_TWinStationCreateFlagsAlign1,
_TWinStationCreateFlagsAlign2,
_TWinStationCreateFlagsAlign3,
_TWinStationCreateFlagsAlign4,
_TWinStationCreateFlagsAlign5,
_TWinStationCreateFlagsAlign6,
_TWinStationCreateFlagsAlign7,
_TWinStationCreateFlagsAlign8,
_TWinStationCreateFlagsAlign9,
_TWinStationCreateFlagsAlign10,
_TWinStationCreateFlagsAlign11,
_TWinStationCreateFlagsAlign12,
_TWinStationCreateFlagsAlign13,
_TWinStationCreateFlagsAlign14,
_TWinStationCreateFlagsAlign15,
_TWinStationCreateFlagsAlign16,
_TWinStationCreateFlagsAlign17,
_TWinStationCreateFlagsAlign18,
_TWinStationCreateFlagsAlign19,
_TWinStationCreateFlagsAlign20,
_TWinStationCreateFlagsAlign21,
_TWinStationCreateFlagsAlign22,
_TWinStationCreateFlagsAlign23,
_TWinStationCreateFlagsAlign24,
_TWinStationCreateFlagsAlign25,
_TWinStationCreateFlagsAlign26,
_TWinStationCreateFlagsAlign27,
_TWinStationCreateFlagsAlign28,
_TWinStationCreateFlagsAlign29,
_TWinStationCreateFlagsAlign30,
_TWinStationCreateFlagsAlign31,
_TWinStationCreateFlagsAlign32
{$ENDIF}
);
_WINSTATIONCREATEW = record
WinStationCreateFlags: TWinStationCreateFlags;
MaxInstanceCount: ULONG;
end {_WINSTATIONCREATEW};
WINSTATIONCREATEW = _WINSTATIONCREATEW;
PWINSTATIONCREATEW = ^_WINSTATIONCREATEW;
type
_WINSTATIONCREATEA = record
WinStationCreateFlags: TWinStationCreateFlags;
MaxInstanceCount: ULONG;
end {_WINSTATIONCREATEA};
WINSTATIONCREATEA = _WINSTATIONCREATEA;
PWINSTATIONCREATEA = ^_WINSTATIONCREATEA;
{$IFDEF UNICODE}
type
WINSTATIONCREATE = WINSTATIONCREATEW;
PWINSTATIONCREATE = PWINSTATIONCREATEW;
{$ELSE}
type
WINSTATIONCREATE = WINSTATIONCREATEA;
PWINSTATIONCREATE = PWINSTATIONCREATEA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
type
_WINSTATIONCONFIGW = record
Comment: Array[0..WINSTATIONCOMMENT_LENGTH] of WCHAR;
User: USERCONFIGW;
OEMId: Array[0..3] of AnsiChar;
end {_WINSTATIONCONFIGW};
WINSTATIONCONFIGW = _WINSTATIONCONFIGW;
PWINSTATIONCONFIGW = ^_WINSTATIONCONFIGW;
type
_WINSTATIONCONFIGA = record
Comment: Array[0..WINSTATIONCOMMENT_LENGTH] of AnsiChar;
User: USERCONFIGA;
OEMId: Array[0..3] of AnsiChar;
end {_WINSTATIONCONFIGA};
WINSTATIONCONFIGA = _WINSTATIONCONFIGA;
PWINSTATIONCONFIGA = ^_WINSTATIONCONFIGA;
{$IFDEF UNICODE}
type
WINSTATIONCONFIG = WINSTATIONCONFIGW;
PWINSTATIONCONFIG = PWINSTATIONCONFIGW;
{$ELSE}
type
WINSTATIONCONFIG = WINSTATIONCONFIGA;
PWINSTATIONCONFIG = PWINSTATIONCONFIGA;
{$ENDIF /* UNICODE*/}
{+//------------------------------------------------*/ }
const
EXECSRVPIPENAMELEN = 48;
type
_WINSTATIONINFOCLASS = (
WinStationCreateData,
WinStationConfiguration,
WinStationPdParams,
WinStationWd,
WinStationPd,
WinStationPrinter,
WinStationClient,
WinStationModules,
WinStationInformation,
WinStationTrace,
WinStationBeep,
WinStationEncryptionOff,
WinStationEncryptionPerm,
WinStationNtSecurity, // vista returns Incorrect function
WinStationUserToken,
WinStationUnused1,
WinStationVideoData, // vista returns Incorrect function
WinStationInitialProgram,
WinStationCd,
WinStationSystemTrace,
WinStationVirtualData,
WinStationClientData,
WinStationSecureDesktopEnter, // not supported on RDP (ica?)
WinStationSecureDesktopExit, // not supported on RDP (ica?)
WinStationLoadBalanceSessionTarget,
WinStationLoadIndicator,
WinStationShadowInfo,
WinStationDigProductId, // vista returns Incorrect function
WinStationLockedState,
WinStationRemoteAddress,
WinStationIdleTime,
WinStationLastReconnectType,
WinStationDisallowAutoReconnect,
WinStationMprNotifyInfo,
WinStationExecSrvSystemPipe,
WinStationSmartCardAutoLogon,
WinStationIsAdminLoggedOn,
WinStationReconnectedFromId,
WinStationEffectsPolicy
);
{+//------------------------------------------------*/ }
type
TData = record
end;
type
_WINSTATIONCLIENTDATA = record
DataName: CLIENTDATANAME;
fUnicodeData: BOOLEAN;
Data: TData; {+// BYTE Data[1]; Variable length data follows*/ }
end {_WINSTATIONCLIENTDATA};
TWinStationClientData = _WINSTATIONCLIENTDATA;
PWINSTATIONCLIENTDATA = ^_WINSTATIONCLIENTDATA;
{+//------------------------------------------------*/ }
type
_WINSTATIONUSERTOKEN = record
ProcessId: THandle;
ThreadId: THandle;
UserToken: THandle;
end {_WINSTATIONUSERTOKEN};
TWinStationUserToken = _WINSTATIONUSERTOKEN;
PWINSTATIONUSERTOKEN = ^_WINSTATIONUSERTOKEN;
{+//------------------------------------------------*/ }
type
_WINSTATIONVIDEODATA = record
HResolution: USHORT;
VResolution: USHORT;
fColorDepth: USHORT;
end {_WINSTATIONVIDEODATA};
TWinStationVideoData = _WINSTATIONVIDEODATA;
PWINSTATIONVIDEODATA = ^_WINSTATIONVIDEODATA;
{+//----------------------------------------------*/ }
type
_WINSTATIONCONFIG2W = record
Create: WINSTATIONCREATEW;
Pd: Array[0..MAX_PDCONFIG-1] of PDCONFIGW;
Wd: WDCONFIGW;
Cd: CDCONFIGW;
Config: WINSTATIONCONFIGW;
end {_WINSTATIONCONFIG2W};
WINSTATIONCONFIG2W = _WINSTATIONCONFIG2W;
PWINSTATIONCONFIG2W = ^_WINSTATIONCONFIG2W;
type
_WINSTATIONCONFIG2A = record
Create: WINSTATIONCREATEA;
Pd: Array[0..MAX_PDCONFIG-1] of PDCONFIGA;
Wd: WDCONFIGA;
Cd: CDCONFIGA;
Config: WINSTATIONCONFIGA;
end {_WINSTATIONCONFIG2A};
WINSTATIONCONFIG2A = _WINSTATIONCONFIG2A;
PWINSTATIONCONFIG2A = ^_WINSTATIONCONFIG2A;
{$IFDEF UNICODE}
type
WINSTATIONCONFIG2 = WINSTATIONCONFIG2W;
PWINSTATIONCONFIG2 = PWINSTATIONCONFIG2W;
{$ELSE}
type
WINSTATIONCONFIG2 = WINSTATIONCONFIG2A;
PWINSTATIONCONFIG2 = PWINSTATIONCONFIG2A;
{$ENDIF /* UNICODE*/}
{+// }
{-* WinStation client data structure }
{= }
TWinStationClientFlags = Set Of (
fTextOnly, //: 1
fDisableCtrlAltDel, //: 1
fMouse, //: 1
fDoubleClickDetect, //: 1
fINetClient, //: 1
fWinStationClientPromptForPassword, //: 1
fMaximizeShell, //: 1
fEnableWindowsKey, //: 1
fRemoteConsoleAudio, //: 1
fWinStationClientPasswordIsScPin, //: 1
fNoAudioPlayback, //: 1
fUsingSavedCreds, //: 1
{$IFDEF DELPHI6_UP}
_TWinStationClientFlagsAlign = al32Bit
{$ELSE}
_TWinStationClientFlagsAlign1,
_TWinStationClientFlagsAlign2,
_TWinStationClientFlagsAlign3,
_TWinStationClientFlagsAlign4,
_TWinStationClientFlagsAlign5,
_TWinStationClientFlagsAlign6,
_TWinStationClientFlagsAlign7,
_TWinStationClientFlagsAlign8,
_TWinStationClientFlagsAlign9,
_TWinStationClientFlagsAlign10,
_TWinStationClientFlagsAlign11,
_TWinStationClientFlagsAlign12,
_TWinStationClientFlagsAlign13,
_TWinStationClientFlagsAlign14,
_TWinStationClientFlagsAlign15,
_TWinStationClientFlagsAlign16,
_TWinStationClientFlagsAlign17,
_TWinStationClientFlagsAlign18,
_TWinStationClientFlagsAlign19,
_TWinStationClientFlagsAlign20,
_TWinStationClientFlagsAlign21,
_TWinStationClientFlagsAlign22,
_TWinStationClientFlagsAlign23,
_TWinStationClientFlagsAlign24,
_TWinStationClientFlagsAlign25,
_TWinStationClientFlagsAlign26,
_TWinStationClientFlagsAlign27,
_TWinStationClientFlagsAlign28,
_TWinStationClientFlagsAlign29,
_TWinStationClientFlagsAlign30,
_TWinStationClientFlagsAlign31,
_TWinStationClientFlagsAlign32
{$ENDIF}
);
type
_WINSTATIONCLIENTW = record
WinStationClientFlags: TWinStationClientFlags;
ClientName: Array[0..CLIENTNAME_LENGTH] of WCHAR;
Domain: Array[0..DOMAIN_LENGTH] of WCHAR;
UserName: Array[0..USERNAME_LENGTH] of WCHAR;
Password: Array[0..PASSWORD_LENGTH] of WCHAR;
WorkDirectory: Array[0..DIRECTORY_LENGTH] of WCHAR;
InitialProgram: Array[0..INITIALPROGRAM_LENGTH] of WCHAR;
SerialNumber: ULONG;
EncryptionLevel: BYTE;
ClientAddressFamily: ULONG;
ClientAddress: Array[0..CLIENTADDRESS_LENGTH] of WCHAR;
HRes: USHORT;
VRes: USHORT;
ColorDepth: USHORT;
ProtocolType: USHORT;
KeyboardLayout: ULONG;
KeyboardType: ULONG;
KeyboardSubType: ULONG;
KeyboardFunctionKey: ULONG;
imeFileName: Array[0..IMEFILENAME_LENGTH] of WCHAR;
ClientDirectory: Array[0..DIRECTORY_LENGTH] of WCHAR;
ClientLicense: Array[0..CLIENTLICENSE_LENGTH] of WCHAR;
ClientModem: Array[0..CLIENTMODEM_LENGTH] of WCHAR;
ClientBuildNumber: ULONG;
ClientHardwareId: ULONG;
ClientProductId: USHORT;
OutBufCountHost: USHORT;
OutBufCountClient: USHORT;
OutBufLength: USHORT;
AudioDriverName: Array[0..8] of WCHAR;
ClientTimeZone: TS_TIME_ZONE_INFORMATION;
ClientSessionId: ULONG;
clientDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of WCHAR;
PerformanceFlags: ULONG;
ActiveInputLocale: ULONG;
end {_WINSTATIONCLIENTW};
WINSTATIONCLIENTW = _WINSTATIONCLIENTW;
PWINSTATIONCLIENTW = ^_WINSTATIONCLIENTW;
{+// }
{-* WinStation client data structure }
{= }
type
_WINSTATIONCLIENTA = record
WinStationClientFlags: TWinStationClientFlags;
ClientName: Array[0..CLIENTNAME_LENGTH] of AnsiChar;
Domain: Array[0..DOMAIN_LENGTH] of AnsiChar;
UserName: Array[0..USERNAME_LENGTH] of AnsiChar;
Password: Array[0..PASSWORD_LENGTH] of AnsiChar;
WorkDirectory: Array[0..DIRECTORY_LENGTH] of AnsiChar;
InitialProgram: Array[0..INITIALPROGRAM_LENGTH] of AnsiChar;
SerialNumber: ULONG;
EncryptionLevel: BYTE;
ClientAddressFamily: ULONG;
ClientAddress: Array[0..CLIENTADDRESS_LENGTH] of AnsiChar;
HRes: USHORT;
VRes: USHORT;
ColorDepth: USHORT;
ProtocolType: USHORT;
KeyboardLayout: ULONG;
KeyboardType: ULONG;
KeyboardSubType: ULONG;
KeyboardFunctionKey: ULONG;
imeFileName: Array[0..IMEFILENAME_LENGTH] of AnsiChar;
ClientDirectory: Array[0..DIRECTORY_LENGTH] of AnsiChar;
ClientLicense: Array[0..CLIENTLICENSE_LENGTH] of AnsiChar;
ClientModem: Array[0..CLIENTMODEM_LENGTH] of AnsiChar;
ClientBuildNumber: ULONG;
ClientHardwareId: ULONG;
ClientProductId: USHORT;
OutBufCountHost: USHORT;
OutBufCountClient: USHORT;
OutBufLength: USHORT;
AudioDriverName: Array[0..8] of AnsiChar;
ClientTimeZone: TS_TIME_ZONE_INFORMATION;
ClientSessionId: ULONG;
clientDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of AnsiChar;
PerformanceFlags: ULONG;
ActiveInputLocale: ULONG;
end {_WINSTATIONCLIENTA};
WINSTATIONCLIENTA = _WINSTATIONCLIENTA;
PWINSTATIONCLIENTA = ^_WINSTATIONCLIENTA;
{$IFDEF UNICODE}
type
WINSTATIONCLIENT_ = WINSTATIONCLIENTW;
PWINSTATIONCLIENT = PWINSTATIONCLIENTW;
{$ELSE}
type
WINSTATIONCLIENT_ = WINSTATIONCLIENTA;
PWINSTATIONCLIENT = PWINSTATIONCLIENTA;
{$ENDIF /* UNICODE*/}
{+// }
{-* T.Share specific protocol performance counters }
{= }
type
_TSHARE_COUNTERS = record
Reserved: ULONG;
end {_TSHARE_COUNTERS};
TSHARE_COUNTERS = _TSHARE_COUNTERS;
PTSHARE_COUNTERS = ^_TSHARE_COUNTERS;
{+// }
{-* WinStation protocol performance counters }
{= }
type
_PROTOCOLCOUNTERS = record
WdBytes: ULONG;
WdFrames: ULONG;
WaitForOutBuf: ULONG;
Frames: ULONG;
Bytes: ULONG;
CompressedBytes: ULONG;
CompressFlushes: ULONG;
Errors: ULONG;
Timeouts: ULONG;
AsyncFramingError: ULONG;
AsyncOverrunError: ULONG;
AsyncOverflowError: ULONG;
AsyncParityError: ULONG;
TdErrors: ULONG;
ProtocolType: USHORT;
case Specific: Integer of
1: (TShareCounters: TSHARE_COUNTERS);
2: (Reserved: Array[0..100-1] of ULONG);
end {_PROTOCOLCOUNTERS};
PROTOCOLCOUNTERS = _PROTOCOLCOUNTERS;
PPROTOCOLCOUNTERS = ^_PROTOCOLCOUNTERS;
TProtocolCounters = _PROTOCOLCOUNTERS;
{+// }
{-* ThinWire cache statistics }
{= }
type
_THINWIRECACHE = record
CacheReads: ULONG;
CacheHits: ULONG;
end {_THINWIRECACHE};
THINWIRECACHE = _THINWIRECACHE;
PTHINWIRECACHE = ^_THINWIRECACHE;
const
MAX_THINWIRECACHE = 4;
type
_RESERVED_CACHE = record
ThinWireCache: Array[0..MAX_THINWIRECACHE-1] of THINWIRECACHE;
end {_RESERVED_CACHE};
RESERVED_CACHE = _RESERVED_CACHE;
PRESERVED_CACHE = ^_RESERVED_CACHE;
{+// }
{-* T.Share specific cache statistics }
{= }
type
_TSHARE_CACHE = record
Reserved: ULONG;
end {_TSHARE_CACHE};
TSHARE_CACHE = _TSHARE_CACHE;
PTSHARE_CACHE = ^_TSHARE_CACHE;
{+// }
{-* WinStation cache statistics }
{= }
type
CACHE_STATISTICS = record
ProtocolType: USHORT;
Length: USHORT;
ReservedCacheStats: RESERVED_CACHE;
TShareCacheStats: TSHARE_CACHE;
Reserved: Array[0..20-1] of ULONG;
end {CACHE_STATISTICS};
{+// }
{-* WinStation protocol status }
{= }
type
_PROTOCOLSTATUS = record
Output: PROTOCOLCOUNTERS;
Input: PROTOCOLCOUNTERS;
Cache: CACHE_STATISTICS;
AsyncSignal: ULONG;
AsyncSignalMask: ULONG;
end {_PROTOCOLSTATUS};
PROTOCOLSTATUS = _PROTOCOLSTATUS;
PPROTOCOLSTATUS = ^_PROTOCOLSTATUS;
type
_PROTOCOLSTATUSEX = record
PROTOCOLSTATUS: _PROTOCOLSTATUS;
Counters: Array[0..MAX_COUNTER_EXTENSIONS-1] of LARGE_INTEGER;
end;
PROTOCOLSTATUSEX = _PROTOCOLSTATUSEX;
PPROTOCOLSTATUSEX = ^_PROTOCOLSTATUSEX;
TProtocolStatusEx = _PROTOCOLSTATUSEX;
{+// }
{-* WinStation query information }
{= }
type
_WINSTATIONINFORMATIONW = record
ConnectState: WINSTATIONSTATECLASS;
WinStationName: WINSTATIONNAMEW;
LogonId: ULONG;
ConnectTime: LARGE_INTEGER;
DisconnectTime: LARGE_INTEGER;
LastInputTime: LARGE_INTEGER;
LogonTime: LARGE_INTEGER;
Status: PROTOCOLSTATUS;
Domain: Array[0..DOMAIN_LENGTH] of WCHAR;
UserName: Array[0..USERNAME_LENGTH] of WCHAR;
CurrentTime: LARGE_INTEGER;
end {_WINSTATIONINFORMATIONW};
WINSTATIONINFORMATIONW = _WINSTATIONINFORMATIONW;
PWINSTATIONINFORMATIONW = ^_WINSTATIONINFORMATIONW;
type
_WINSTATIONINFORMATIONA = record
ConnectState: WINSTATIONSTATECLASS;
WinStationName: WINSTATIONNAMEA;
LogonId: ULONG;
ConnectTime: LARGE_INTEGER;
DisconnectTime: LARGE_INTEGER;
LastInputTime: LARGE_INTEGER;
LogonTime: LARGE_INTEGER;
Status: PROTOCOLSTATUS;
Domain: Array[0..DOMAIN_LENGTH] of AnsiChar;
UserName: Array[0..USERNAME_LENGTH] of AnsiChar;
CurrentTime: LARGE_INTEGER;
end {_WINSTATIONINFORMATIONA};
WINSTATIONINFORMATIONA = _WINSTATIONINFORMATIONA;
PWINSTATIONINFORMATIONA = ^_WINSTATIONINFORMATIONA;
{$IFDEF UNICODE}
type
WINSTATIONINFORMATION_ = WINSTATIONINFORMATIONW;
PWINSTATIONINFORMATION = PWINSTATIONINFORMATIONW;
{$ELSE}
type
WINSTATIONINFORMATION_ = WINSTATIONINFORMATIONA;
PWINSTATIONINFORMATION = PWINSTATIONINFORMATIONA;
{$ENDIF /* UNICODE*/}
{+// }
{-* Load balancing data types }
{= }
type
_LOADFACTORTYPE = (
ErrorConstraint,
PagedPoolConstraint,
NonPagedPoolConstraint,
AvailablePagesConstraint,
SystemPtesConstraint,
CPUConstraint );
LOADFACTORTYPE = _LOADFACTORTYPE;
TLoadFactorType = _LOADFACTORTYPE;
type
_WINSTATIONLOADINDICATORDATA = record
RemainingSessionCapacity: ULONG;
LoadFactor: LOADFACTORTYPE;
TotalSessions: ULONG;
DisconnectedSessions: ULONG;
IdleCPU: LARGE_INTEGER;
TotalCPU: LARGE_INTEGER;
RawSessionCapacity: ULONG;
reserved: Array[0..9-1] of ULONG;
end {_WINSTATIONLOADINDICATORDATA};
WINSTATIONLOADINDICATORDATA = _WINSTATIONLOADINDICATORDATA;
PWINSTATIONLOADINDICATORDATA = ^_WINSTATIONLOADINDICATORDATA;
{+// }
{-* WinStation shadow states }
{= }
type
_SHADOWSTATECLASS = (
State_NoShadow,
State_Shadowing,
State_Shadowed );
SHADOWSTATECLASS = _SHADOWSTATECLASS;
TShadowStateClass = _SHADOWSTATECLASS;
{+// }
{-* Shadow query/set information }
{= }
type
_WINSTATIONSHADOW = record
ShadowState: SHADOWSTATECLASS;
ShadowClass: SHADOWCLASS;
SessionId: ULONG;
ProtocolType: ULONG;
end {_WINSTATIONSHADOW};
WINSTATIONSHADOW = _WINSTATIONSHADOW;
PWINSTATIONSHADOW = ^_WINSTATIONSHADOW;
type
_WINSTATIONPRODIDW = record
DigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of WCHAR;
ClientDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of WCHAR;
OuterMostDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of WCHAR;
curentSessionId: ULONG;
ClientSessionId: ULONG;
OuterMostSessionId: ULONG;
end {_WINSTATIONPRODIDW};
WINSTATIONPRODIDW = _WINSTATIONPRODIDW;
PWINSTATIONPRODIDW = ^_WINSTATIONPRODIDW;
type
_WINSTATIONPRODIDA = record
DigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of AnsiChar;
ClientDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of AnsiChar;
OuterMostDigProductId: Array[0..CLIENT_PRODUCT_ID_LENGTH-1] of AnsiChar;
curentSessionId: ULONG;
ClientSessionId: ULONG;
OuterMostSessionId: ULONG;
end {_WINSTATIONPRODIDA};
WINSTATIONPRODIDA = _WINSTATIONPRODIDA;
PWINSTATIONPRODIDA = ^_WINSTATIONPRODIDA;
{$IFDEF UNICODE}
WINSTATIONPRODID = WINSTATIONPRODIDW;
PWINSTATIONPRODID = PWINSTATIONPRODIDW;
{$ELSE}
WINSTATIONPRODID = WINSTATIONPRODIDA;
PWINSTATIONPRODID = PWINSTATIONPRODIDA;
{$ENDIF /* UNICODE*/}
_WINSTATION_REMOTE_ADDRESS = record
AddressFamily: DWORD;
Port: WORD;
Address: array [0..19] of BYTE;
Reserved: array[0..5] of BYTE;
end;
Tipv4 = record
sin_family: Word;
sin_port: USHORT;
in_addr: ULONG;
sin_zero: Array[0..7] of UCHAR;
end {ipv4};
Tipv6 = record
sin6_port: USHORT;
sin6_flowinfo: ULONG;
sin6_addr: Array[0..7] of USHORT;
sin6_scope_id: ULONG;
end {ipv6};
type _WINSTATIONREMOTEADDRESS = record
case sin_family: USHORT of
AF_INET: (ipv4: TIPv4);
AF_INET6: (ipv6: TIPv6);
end;
{+//------------------------------------------------*/ }
{+// }
{-* Licensing Policy information struct }
{= }
const
LCPOLICYINFOTYPE_V1 = (1);
LCPOLICYINFOTYPE_CURRENT = LCPOLICYINFOTYPE_V1;
type
LCPOLICYINFO_V1W = record
ulVersion: ULONG;
lpPolicyName: PWCHAR;
lpPolicyDescription: PWCHAR;
end {LCPOLICYINFO_V1W};
LPLCPOLICYINFO_V1W = ^LCPOLICYINFO_V1W;
type
LCPOLICYINFO_V1A = record
ulVersion: ULONG;
lpPolicyName: PAnsiChar;
lpPolicyDescription: PAnsiChar;
end {LCPOLICYINFO_V1A};
LPLCPOLICYINFO_V1A = ^LCPOLICYINFO_V1A;
{$IFDEF UNICODE}
type
LCPOLICYINFO_V1 = LCPOLICYINFO_V1W;
LPLCPOLICYINFO_V1 = LPLCPOLICYINFO_V1W;
{$ELSE}
type
LCPOLICYINFO_V1 = LCPOLICYINFO_V1A;
LPLCPOLICYINFO_V1 = LPLCPOLICYINFO_V1A;
{$ENDIF}
const
DEFAULT_POLICY_ID = 1;
PERSEAT_POLICY_ID = 2;
INTCONN_POLICY_ID = 3;
PERUSER_POLICY_ID = 4;
POLICY_NOT_CONFIGURED = 5;
MAXIMUM_POLICY_ID = 6;
{+//------------------------------------------------*/ }
type
_BEEPINPUT = record
uType: ULONG;
end {_BEEPINPUT};
BEEPINPUT = _BEEPINPUT;
PBEEPINPUT = ^_BEEPINPUT;
{+//********************* }
{-* NWLogon Structure }
{=********************* }
const
{$IFNDEF JWA_INCLUDEMODE}
IDTIMEOUT = 32000;
IDASYNC = 32001;
{$ENDIF JWA_INCLUDEMODE}
WSD_LOGOFF = $00000001;
WSD_SHUTDOWN = $00000002;
WSD_REBOOT = $00000004;
WSD_POWEROFF = $00000008;
WSD_FASTREBOOT = $00000010;
{$IFNDEF JWA_INCLUDEMODE}
const
WTS_CONSOLE_CONNECT = $1;
WTS_CONSOLE_DISCONNECT = $2;
WTS_REMOTE_CONNECT = $3;
WTS_REMOTE_DISCONNECT = $4;
WTS_SESSION_LOGON = $5;
WTS_SESSION_LOGOFF = $6;
WTS_SESSION_LOCK = $7;
WTS_SESSION_UNLOCK = $8;
WTS_SESSION_REMOTE_CONTROL = $9;
{$ENDIF JWA_INCLUDEMODE}
// We cannot convert the CREATE_MASK macro below to Delphi
// CREATE_MASK(__bit) = (1 << (__bit -1) );
// The Macro is used to calculate constants:
// #define WTS_CONSOLE_CONNECT_MASK CREATE_MASK( WTS_CONSOLE_CONNECT )
// The output for the masks is:
// WTS_CONSOLE_CONNECT_MASK=1
// WTS_CONSOLE_DISCONNECT_MASK=2
// WTS_REMOTE_CONNECT_MASK=4
// WTS_REMOTE_DISCONNECT_MASK=8
// WTS_SESSION_LOGON_MASK=16
// WTS_SESSION_LOGOFF_MASK=32
// WTS_SESSION_LOCK_MASK=64
// WTS_SESSION_UNLOCK_MASK=128
// WTS_SESSION_REMOTE_CONTROL_MASK=256
// WTS_ALL_NOTIFICATION_MASK=-1
const
WTS_CONSOLE_CONNECT_MASK = 1;
WTS_CONSOLE_DISCONNECT_MASK = 2;
WTS_REMOTE_CONNECT_MASK = 4;
WTS_REMOTE_DISCONNECT_MASK = 8;
WTS_SESSION_LOGON_MASK = 16;
WTS_SESSION_LOGOFF_MASK = 32;
WTS_SESSION_LOCK_MASK = 64;
WTS_SESSION_UNLOCK_MASK = 128;
WTS_SESSION_REMOTE_CONTROL_MASK = 256;
WTS_ALL_NOTIFICATION_MASK = -1;
type
_SESSIONDATAW = record
SessionId: ULONG;
State: WINSTATIONSTATECLASS;
Source: ULONG;
bFullDesktop: BOOLEAN;
SessionType: GUID;
WinStationName: WINSTATIONNAMEW;
ProtocolStatus: PROTOCOLSTATUS;
end {_SESSIONDATAW};
SESSIONDATAW = _SESSIONDATAW;
PSESSIONDATAW = ^_SESSIONDATAW;
type
SESSIONDATA = SESSIONDATAW;
PSESSIONDATA = PSESSIONDATAW;
{$IFNDEF _TS_CONNECTIONTYPE_GUID_}
{$DEFINE _TS_CONNECTIONTYPE_GUID_}
{///=========================================================================== }
{/// }
{/// Definitions of various terminal types. }
{/// }
{///=========================================================================== }
{/// GUID for Service Terminal }
const
TERMINAL_TYPE_SERVICE: TGUID = '{88f5767d-d13f-404d-a348-8b8e030294a9}';
{/// GUID for Regular desktop Remote Terminal }
const
TERMINAL_TYPE_REGULAR_DESKTOP: TGUID = '{0f0a4bf8-8362-435d-938c-222a518a8b78}';
{/// GUID for Remote Applications Terminal }
const
TERMINAL_TYPE_RDP_REMOTEAPP: TGUID = '{eddcc3ce-6e7e-4f4b-8439-3d9ad4c9440f}';
{/// GUID for MCE Terminal - This is same as MCE license type }
const
TERMINAL_TYPE_MCE: TGUID = '{8dc86f1d-9969-4379-91c1-06fe1dc60575}';
{/// GUID for the license pool that includes regular desktop, single app sessions, }
{/// RAIL etc. }
const
LICENSE_TYPE_DEFAULT: TGUID = '{00000000-0000-0000-0000-000000000000}';
const
LICENSE_TYPE_BUILTIN: TGUID = '{45344fe7-00e6-4ac6-9f01-d01fd4ffadfb}';
{/// GUID for the app server license type. }
const
LICENSE_TYPE_APPSERVER: TGUID = '{36e64007-aef1-4085-89e3-66c26abade84}';
{/// GUID for the license pool that includes MCE sessions. }
const
LICENSE_TYPE_MCE: TGUID = '{8dc86f1d-9969-4379-91c1-06fe1dc60575}';
{$ENDIF _TS_CONNECTIONTYPE_GUID_}
{$ENDIF JWA_IMPLEMENTATIONSECTION}
{$IFNDEF JWA_OMIT_SECTIONS}
implementation
{$ENDIF JWA_OMIT_SECTIONS}
{$IFNDEF JWA_INTERFACESECTION}
{$IFNDEF DYNAMIC_LINK}
//static link
{$ELSE}
//dynamic link
{$ENDIF DYNAMIC_LINK}
{$ENDIF JWA_INTERFACESECTION}
{$IFNDEF JWA_OMIT_SECTIONS}
end.
{$ENDIF JWA_OMIT_SECTIONS}