{"action":"created","comment":{"url":"https://api.github.com/repos/retep998/winapi-rs/pulls/comments/205934602","pull_request_review_id":141308762,"id":205934602,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNTkzNDYwMg==","diff_hunk":"@@ -0,0 +1,925 @@\n+ // Copyright © 2015-2018 winapi-rs developers\n+// Licensed under the Apache License, Version 2.0\n+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license\n+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.\n+// All files in the project carrying such notice may not be copied, modified, or distributed\n+// except according to those terms.\n+use shared::minwindef::{BOOL, BYTE, DWORD, LPDWORD, MAX_PATH, PBOOL, PULONG, ULONG, USHORT};\n+use shared::windef::HWND;\n+use um::winnt::{\n+    CHAR, HANDLE, LARGE_INTEGER, LONG, LPSTR, LPWSTR, PCHAR, PSECURITY_DESCRIPTOR, PSID, PSTR,\n+    PVOID, PWSTR, SECURITY_INFORMATION, STANDARD_RIGHTS_REQUIRED, WCHAR\n+};\n+pub const WTS_CURRENT_SERVER: HANDLE = 0isize as HANDLE;\n+pub const WTS_CURRENT_SERVER_HANDLE: HANDLE = 0isize as HANDLE;\n+pub const WTS_CURRENT_SESSION: DWORD = -1i32 as DWORD;\n+pub const WTS_ANY_SESSION: DWORD = -2i32 as DWORD;\n+const USERNAME_LENGTH: usize = 20;\n+const CLIENTNAME_LENGTH: usize = 20;\n+const CLIENTADDRESS_LENGTH: usize = 30;\n+pub const WTS_WSD_LOGOFF: DWORD = 0x00000001;\n+pub const WTS_WSD_SHUTDOWN: DWORD = 0x00000002;\n+pub const WTS_WSD_REBOOT: DWORD = 0x00000004;\n+pub const WTS_WSD_POWEROFF: DWORD = 0x00000008;\n+pub const WTS_WSD_FASTREBOOT: DWORD = 0x00000010;\n+const WINSTATIONNAME_LENGTH: usize = 32;\n+const DOMAIN_LENGTH: usize = 32;\n+const WTS_DRIVE_LENGTH: usize = 3;\n+const WTS_LISTENER_NAME_LENGTH: usize = 32;\n+const WTS_COMMENT_LENGTH: usize = 60;\n+pub const WTS_LISTENER_CREATE: DWORD = 0x00000001;\n+pub const WTS_LISTENER_UPDATE: DWORD = 0x00000010;\n+pub const WTS_SECURITY_QUERY_INFORMATION: DWORD = 0x00000001;\n+pub const WTS_SECURITY_SET_INFORMATION: DWORD = 0x00000002;\n+pub const WTS_SECURITY_RESET: DWORD = 0x00000004;\n+pub const WTS_SECURITY_VIRTUAL_CHANNELS: DWORD = 0x00000008;\n+pub const WTS_SECURITY_REMOTE_CONTROL: DWORD = 0x00000010;\n+pub const WTS_SECURITY_LOGON: DWORD = 0x00000020;\n+pub const WTS_SECURITY_LOGOFF: DWORD = 0x00000040;\n+pub const WTS_SECURITY_MESSAGE: DWORD = 0x00000080;\n+pub const WTS_SECURITY_CONNECT: DWORD = 0x00000100;\n+pub const WTS_SECURITY_DISCONNECT: DWORD = 0x00000200;\n+pub const WTS_SECURITY_GUEST_ACCESS: DWORD = WTS_SECURITY_LOGON;\n+pub const WTS_SECURITY_CURRENT_GUEST_ACCESS: DWORD =\n+    WTS_SECURITY_VIRTUAL_CHANNELS | WTS_SECURITY_LOGOFF;\n+pub const WTS_SECURITY_USER_ACCESS: DWORD =\n+    WTS_SECURITY_CURRENT_GUEST_ACCESS | WTS_SECURITY_QUERY_INFORMATION | WTS_SECURITY_CONNECT;\n+pub const WTS_SECURITY_CURRENT_USER_ACCESS: DWORD = WTS_SECURITY_SET_INFORMATION\n+    | WTS_SECURITY_RESET\n+    | WTS_SECURITY_VIRTUAL_CHANNELS\n+    | WTS_SECURITY_LOGOFF\n+    | WTS_SECURITY_DISCONNECT;\n+pub const WTS_SECURITY_ALL_ACCESS: DWORD = STANDARD_RIGHTS_REQUIRED\n+    | WTS_SECURITY_QUERY_INFORMATION\n+    | WTS_SECURITY_SET_INFORMATION\n+    | WTS_SECURITY_RESET\n+    | WTS_SECURITY_VIRTUAL_CHANNELS\n+    | WTS_SECURITY_REMOTE_CONTROL\n+    | WTS_SECURITY_LOGON\n+    | WTS_SECURITY_MESSAGE\n+    | WTS_SECURITY_CONNECT\n+    | WTS_SECURITY_DISCONNECT;\n+ENUM!{enum WTS_CONNECTSTATE_CLASS {\n+    WTSActive,\n+    WTSConnected,\n+    WTSConnectQuery,\n+    WTSShadow,\n+    WTSDisconnected,\n+    WTSIdle,\n+    WTSListen,\n+    WTSReset,\n+    WTSDown,\n+    WTSInit,\n+}}\n+STRUCT!{struct WTS_SERVER_INFOW {\n+    pServerName: LPWSTR,\n+}}\n+pub type PWTS_SERVER_INFOW = *mut WTS_SERVER_INFOW;\n+STRUCT!{struct WTS_SERVER_INFOA {\n+    pServerName: LPSTR,\n+}}\n+pub type PWTS_SERVER_INFOA = *mut WTS_SERVER_INFOA;\n+STRUCT!{struct WTS_SESSION_INFOW {\n+    SessionId: DWORD,\n+    pWinStationName: LPWSTR,\n+    State: WTS_CONNECTSTATE_CLASS,\n+}}\n+pub type PWTS_SESSION_INFOW = *mut WTS_SESSION_INFOW;\n+STRUCT!{struct WTS_SESSION_INFOA {\n+    SessionId: DWORD,\n+    pWinStationName: LPSTR,\n+    State: WTS_CONNECTSTATE_CLASS,\n+}}\n+pub type PWTS_SESSION_INFOA = *mut WTS_SESSION_INFOA;\n+STRUCT!{struct WTS_SESSION_INFO_1W {\n+    ExecEnvId: DWORD,\n+    State: WTS_CONNECTSTATE_CLASS,\n+    SessionId: DWORD,\n+    pSessionName: LPWSTR,\n+    pHostName: LPWSTR,\n+    pUserName: LPWSTR,\n+    pDomainName: LPWSTR,\n+    pFarmName: LPWSTR,\n+}}\n+pub type PWTS_SESSION_INFO_1W = *mut WTS_SESSION_INFO_1W;\n+STRUCT!{struct WTS_SESSION_INFO_1A {\n+    ExecEnvId: DWORD,\n+    State: WTS_CONNECTSTATE_CLASS,\n+    SessionId: DWORD,\n+    pSessionName: LPSTR,\n+    pHostName: LPSTR,\n+    pUserName: LPSTR,\n+    pDomainName: LPSTR,\n+    pFarmName: LPSTR,\n+}}\n+pub type PWTS_SESSION_INFO_1A = *mut WTS_SESSION_INFO_1A;\n+STRUCT!{struct WTS_PROCESS_INFOW {\n+    SessionId: DWORD,\n+    ProcessId: DWORD,\n+    pProcessName: LPWSTR,\n+    pUserSid: PSID,\n+}}\n+pub type PWTS_PROCESS_INFOW = *mut WTS_PROCESS_INFOW;\n+STRUCT!{struct WTS_PROCESS_INFOA {\n+    SessionId: DWORD,\n+    ProcessId: DWORD,\n+    pProcessName: LPSTR,\n+    pUserSid: PSID,\n+}}\n+pub type PWTS_PROCESS_INFOA = *mut WTS_PROCESS_INFOA;\n+pub const WTS_PROTOCOL_TYPE_CONSOLE: DWORD = 0;\n+pub const WTS_PROTOCOL_TYPE_ICA: DWORD = 1;\n+pub const WTS_PROTOCOL_TYPE_RDP: DWORD = 2;\n+ENUM!{enum WTS_INFO_CLASS {\n+    WTSInitialProgram,\n+    WTSApplicationName,\n+    WTSWorkingDirectory,\n+    WTSOEMId,\n+    WTSSessionId,\n+    WTSUserName,\n+    WTSWinStationName,\n+    WTSDomainName,\n+    WTSConnectState,\n+    WTSClientBuildNumber,\n+    WTSClientName,\n+    WTSClientDirectory,\n+    WTSClientProductId,\n+    WTSClientHardwareId,\n+    WTSClientAddress,\n+    WTSClientDisplay,\n+    WTSClientProtocolType,\n+    WTSIdleTime,\n+    WTSLogonTime,\n+    WTSIncomingBytes,\n+    WTSOutgoingBytes,\n+    WTSIncomingFrames,\n+    WTSOutgoingFrames,\n+    WTSClientInfo,\n+    WTSSessionInfo,\n+    WTSSessionInfoEx,\n+    WTSConfigInfo,\n+    WTSValidationInfo,\n+    WTSSessionAddressV4,\n+    WTSIsRemoteSession,\n+}}\n+STRUCT!{struct WTSCONFIGINFOW {\n+    version: ULONG,\n+    fConnectClientDrivesAtLogon: ULONG,\n+    fConnectPrinterAtLogon: ULONG,\n+    fDisablePrinterRedirection: ULONG,\n+    fDisableDefaultMainClientPrinter: ULONG,\n+    ShadowSettings: ULONG,\n+    LogonUserName: [WCHAR; USERNAME_LENGTH + 1],\n+    LogonDomain: [WCHAR; DOMAIN_LENGTH + 1],\n+    WorkDirectory: [WCHAR; MAX_PATH + 1],\n+    InitialProgram: [WCHAR; MAX_PATH + 1],\n+    ApplicationName: [WCHAR; MAX_PATH + 1],\n+}}\n+pub type PWTSCONFIGINFOW = *mut WTSCONFIGINFOW;\n+STRUCT!{struct WTSCONFIGINFOA {\n+    version: ULONG,\n+    fConnectClientDrivesAtLogon: ULONG,\n+    fConnectPrinterAtLogon: ULONG,\n+    fDisablePrinterRedirection: ULONG,\n+    fDisableDefaultMainClientPrinter: ULONG,\n+    ShadowSettings: ULONG,\n+    LogonUserName: [CHAR; USERNAME_LENGTH + 1],\n+    LogonDomain: [CHAR; DOMAIN_LENGTH + 1],\n+    WorkDirectory: [CHAR; MAX_PATH + 1],\n+    InitialProgram: [CHAR; MAX_PATH + 1],\n+    ApplicationName: [CHAR; MAX_PATH + 1],\n+}}\n+pub type PWTSCONFIGINFOA = *mut WTSCONFIGINFOA;\n+STRUCT!{struct WTSINFOW {\n+    State: WTS_CONNECTSTATE_CLASS,\n+    SessionId: DWORD,\n+    IncomingBytes: DWORD,\n+    OutgoingBytes: DWORD,\n+    IncomingFrames: DWORD,\n+    OutgoingFrames: DWORD,\n+    IncomingCompressedBytes: DWORD,\n+    OutgoingCompressedBytes: DWORD,\n+    WinStationName: [WCHAR; WINSTATIONNAME_LENGTH],\n+    Domain: [WCHAR; DOMAIN_LENGTH],\n+    UserName: [WCHAR; USERNAME_LENGTH + 1],\n+    ConnectTime: LARGE_INTEGER,\n+    DisconnectTime: LARGE_INTEGER,\n+    LastInputTime: LARGE_INTEGER,\n+    LogonTime: LARGE_INTEGER,\n+    CurrentTime: LARGE_INTEGER,\n+}}\n+pub type PWTSINFOW = *mut WTSINFOW;\n+STRUCT!{struct WTSINFOA {\n+    State: WTS_CONNECTSTATE_CLASS,\n+    SessionId: DWORD,\n+    IncomingBytes: DWORD,\n+    OutgoingBytes: DWORD,\n+    IncomingFrames: DWORD,\n+    OutgoingFrames: DWORD,\n+    IncomingCompressedBytes: DWORD,\n+    OutgoingCompressedBytes: DWORD,\n+    WinStationName: [CHAR; WINSTATIONNAME_LENGTH],\n+    Domain: [CHAR; DOMAIN_LENGTH],\n+    UserName: [CHAR; USERNAME_LENGTH + 1],\n+    ConnectTime: LARGE_INTEGER,\n+    DisconnectTime: LARGE_INTEGER,\n+    LastInputTime: LARGE_INTEGER,\n+    LogonTime: LARGE_INTEGER,\n+    CurrentTime: LARGE_INTEGER,\n+}}\n+pub type PWTSINFOA = *mut WTSINFOA;\n+pub const WTS_SESSIONSTATE_UNKNOWN: DWORD = 0xFFFFFFFF;\n+pub const WTS_SESSIONSTATE_LOCK: DWORD = 0x00000000;\n+pub const WTS_SESSIONSTATE_UNLOCK: DWORD = 0x00000001;\n+STRUCT!{struct WTSINFOEX_LEVEL1_W {\n+    SessionId: ULONG,\n+    SessionState: WTS_CONNECTSTATE_CLASS,\n+    SessionFlags: LONG,\n+    WinStationName: [WCHAR; WINSTATIONNAME_LENGTH + 1],\n+    UserName: [WCHAR; USERNAME_LENGTH + 1],\n+    DomainName: [WCHAR; DOMAIN_LENGTH + 1],\n+    LogonTime: LARGE_INTEGER,\n+    ConnectTime: LARGE_INTEGER,\n+    DisconnectTime: LARGE_INTEGER,\n+    LastInputTime: LARGE_INTEGER,\n+    CurrentTime: LARGE_INTEGER,\n+    IncomingBytes: DWORD,\n+    OutgoingBytes: DWORD,\n+    IncomingFrames: DWORD,\n+    OutgoingFrames: DWORD,\n+    IncomingCompressedBytes: DWORD,\n+    OutgoingCompressedBytes: DWORD,\n+}}\n+pub type PWTSINFOEX_LEVEL1_W = *mut WTSINFOEX_LEVEL1_W;\n+STRUCT!{struct WTSINFOEX_LEVEL1_A {\n+    SessionId: ULONG,\n+    SessionState: WTS_CONNECTSTATE_CLASS,\n+    SessionFlags: LONG,\n+    WinStationName: [CHAR; WINSTATIONNAME_LENGTH + 1],\n+    UserName: [CHAR; USERNAME_LENGTH + 1],\n+    DomainName: [CHAR; DOMAIN_LENGTH + 1],\n+    LogonTime: LARGE_INTEGER,\n+    ConnectTime: LARGE_INTEGER,\n+    DisconnectTime: LARGE_INTEGER,\n+    LastInputTime: LARGE_INTEGER,\n+    CurrentTime: LARGE_INTEGER,\n+    IncomingBytes: DWORD,\n+    OutgoingBytes: DWORD,\n+    IncomingFrames: DWORD,\n+    OutgoingFrames: DWORD,\n+    IncomingCompressedBytes: DWORD,\n+    OutgoingCompressedBytes: DWORD,\n+}}\n+pub type PWTSINFOEX_LEVEL1_A = *mut WTSINFOEX_LEVEL1_A;\n+UNION!{union WTSINFOEX_LEVEL_W {\n+    [u64; 28],\n+    WTSInfoExLevel1 WTSInfoExLevel1_mut: WTSINFOEX_LEVEL1_W,\n+}}\n+pub type PWTSINFOEX_LEVEL_W = *mut WTSINFOEX_LEVEL_W;\n+UNION!{union WTSINFOEX_LEVEL_A {\n+    [u64; 19],\n+    WTSInfoExLevel1 WTSInfoExLevel1_mut: WTSINFOEX_LEVEL1_A,\n+}}\n+pub type PWTSINFOEX_LEVEL_A = *mut WTSINFOEX_LEVEL_A;\n+STRUCT!{struct WTSINFOEXW {\n+    Level: DWORD,\n+    Data: WTSINFOEX_LEVEL_W,\n+}}\n+pub type PWTSINFOEXW = *mut WTSINFOEXW;\n+STRUCT!{struct WTSINFOEXA {\n+    Level: DWORD,\n+    Data: WTSINFOEX_LEVEL_A,\n+}}\n+pub type PWTSINFOEXA = *mut WTSINFOEXA;\n+STRUCT!{struct WTSCLIENTW {\n+    ClientName: [WCHAR; CLIENTNAME_LENGTH + 1],\n+    Domain: [WCHAR; DOMAIN_LENGTH + 1],\n+    UserName: [WCHAR; USERNAME_LENGTH + 1],\n+    WorkDirectory: [WCHAR; MAX_PATH + 1],\n+    InitialProgram: [WCHAR; MAX_PATH + 1],\n+    EncryptionLevel: BYTE,\n+    ClientAddressFamily: ULONG,\n+    ClientAddress: [USHORT; CLIENTADDRESS_LENGTH + 1],\n+    HRes: USHORT,\n+    VRes: USHORT,\n+    ColorDepth: USHORT,\n+    ClientDirectory: [WCHAR; MAX_PATH + 1],\n+    ClientBuildNumber: ULONG,\n+    ClientHardwareId: ULONG,\n+    ClientProductId: USHORT,\n+    OutBufCountHost: USHORT,\n+    OutBufCountClient: USHORT,\n+    OutBufLength: USHORT,\n+    DeviceId: [WCHAR; MAX_PATH + 1],\n+}}\n+pub type PWTSCLIENTW = *mut WTSCLIENTW;\n+STRUCT!{struct WTSCLIENTA {\n+    ClientName: [CHAR; CLIENTNAME_LENGTH + 1],\n+    Domain: [CHAR; DOMAIN_LENGTH + 1],\n+    UserName: [CHAR; USERNAME_LENGTH + 1],\n+    WorkDirectory: [CHAR; MAX_PATH + 1],\n+    InitialProgram: [CHAR; MAX_PATH + 1],\n+    EncryptionLevel: BYTE,\n+    ClientAddressFamily: ULONG,\n+    ClientAddress: [USHORT; CLIENTADDRESS_LENGTH + 1],\n+    HRes: USHORT,\n+    VRes: USHORT,\n+    ColorDepth: USHORT,\n+    ClientDirectory: [CHAR; MAX_PATH + 1],\n+    ClientBuildNumber: ULONG,\n+    ClientHardwareId: ULONG,\n+    ClientProductId: USHORT,\n+    OutBufCountHost: USHORT,\n+    OutBufCountClient: USHORT,\n+    OutBufLength: USHORT,\n+    DeviceId: [CHAR; MAX_PATH + 1],\n+}}\n+pub type PWTSCLIENTA = *mut WTSCLIENTA;\n+const PRODUCTINFO_COMPANYNAME_LENGTH: usize = 256;\n+const PRODUCTINFO_PRODUCTID_LENGTH: usize = 4;\n+STRUCT!{struct WTS_PRODUCT_INFOA\n+{\n+    CompanyName: [CHAR; PRODUCTINFO_COMPANYNAME_LENGTH],\n+    ProductID: [CHAR; PRODUCTINFO_PRODUCTID_LENGTH],\n+}}\n+pub type PRODUCT_INFOA = WTS_PRODUCT_INFOA;\n+STRUCT!{struct WTS_PRODUCT_INFOW\n+{\n+    CompanyName: [WCHAR; PRODUCTINFO_COMPANYNAME_LENGTH],\n+    ProductID: [WCHAR; PRODUCTINFO_PRODUCTID_LENGTH],\n+}}\n+pub type PRODUCT_INFOW = WTS_PRODUCT_INFOW;\n+const VALIDATIONINFORMATION_LICENSE_LENGTH: usize = 16384;\n+const VALIDATIONINFORMATION_HARDWAREID_LENGTH: usize = 20;\n+STRUCT!{struct WTS_VALIDATION_INFORMATIONA {\n+    ProductInfo: PRODUCT_INFOA,\n+    License: [BYTE; VALIDATIONINFORMATION_LICENSE_LENGTH],\n+    LicenseLength: DWORD,\n+    HardwareID: [BYTE; VALIDATIONINFORMATION_HARDWAREID_LENGTH],\n+    HardwareIDLength: DWORD,\n+}}\n+pub type PWTS_VALIDATION_INFORMATIONA = *mut WTS_VALIDATION_INFORMATIONA;\n+\n+STRUCT!{struct WTS_VALIDATION_INFORMATIONW {\n+    ProductInfo: PRODUCT_INFOW,\n+    License: [BYTE; VALIDATIONINFORMATION_LICENSE_LENGTH],\n+    LicenseLength: DWORD,\n+    HardwareID: [BYTE; VALIDATIONINFORMATION_HARDWAREID_LENGTH],\n+    HardwareIDLength: DWORD,\n+}}\n+pub type PWTS_VALIDATION_INFORMATIONW = *mut WTS_VALIDATION_INFORMATIONW;\n+STRUCT!{struct WTS_CLIENT_ADDRESS {\n+    AddressFamily: DWORD,\n+    Address: [BYTE; 20],\n+}}\n+pub type PWTS_CLIENT_ADDRESS = *mut WTS_CLIENT_ADDRESS;\n+STRUCT!{struct WTS_CLIENT_DISPLAY {\n+    HorizontalResolution: DWORD,\n+    VerticalResolution: DWORD,\n+    ColorDepth: DWORD,\n+}}\n+pub type PWTS_CLIENT_DISPLAY = *mut WTS_CLIENT_DISPLAY;\n+ENUM!{enum WTS_CONFIG_CLASS {\n+    WTSUserConfigInitialProgram,\n+    WTSUserConfigWorkingDirectory,\n+    WTSUserConfigfInheritInitialProgram,\n+    WTSUserConfigfAllowLogonTerminalServer,\n+    WTSUserConfigTimeoutSettingsConnections,\n+    WTSUserConfigTimeoutSettingsDisconnections,\n+    WTSUserConfigTimeoutSettingsIdle,\n+    WTSUserConfigfDeviceClientDrives,\n+    WTSUserConfigfDeviceClientPrinters,\n+    WTSUserConfigfDeviceClientDefaultPrinter,\n+    WTSUserConfigBrokenTimeoutSettings,\n+    WTSUserConfigReconnectSettings,\n+    WTSUserConfigModemCallbackSettings,\n+    WTSUserConfigModemCallbackPhoneNumber,\n+    WTSUserConfigShadowingSettings,\n+    WTSUserConfigTerminalServerProfilePath,\n+    WTSUserConfigTerminalServerHomeDir,\n+    WTSUserConfigTerminalServerHomeDirDrive,\n+    WTSUserConfigfTerminalServerRemoteHomeDir,\n+    WTSUserConfigUser,\n+}}\n+ENUM!{enum WTS_CONFIG_SOURCE {\n+    WTSUserConfigSourceSAM,\n+}}\n+STRUCT!{struct WTSUSERCONFIGA {\n+    Source: DWORD,\n+    InheritInitialProgram: DWORD,\n+    AllowLogonTerminalServer: DWORD,\n+    TimeoutSettingsConnections: DWORD,\n+    TimeoutSettingsDisconnections: DWORD,\n+    TimeoutSettingsIdle: DWORD,\n+    DeviceClientDrives: DWORD,\n+    DeviceClientPrinters: DWORD,\n+    ClientDefaultPrinter: DWORD,\n+    BrokenTimeoutSettings: DWORD,\n+    ReconnectSettings: DWORD,\n+    ShadowingSettings: DWORD,\n+    TerminalServerRemoteHomeDir: DWORD,\n+    InitialProgram: [CHAR; MAX_PATH + 1],\n+    WorkDirectory: [CHAR; MAX_PATH + 1],\n+    TerminalServerProfilePath: [CHAR; MAX_PATH + 1],\n+    TerminalServerHomeDir: [CHAR; MAX_PATH + 1],\n+    TerminalServerHomeDirDrive: [CHAR; WTS_DRIVE_LENGTH + 1],\n+}}\n+pub type PWTSUSERCONFIGA = *mut WTSUSERCONFIGA;\n+STRUCT!{struct WTSUSERCONFIGW {\n+    Source: DWORD,\n+    InheritInitialProgram: DWORD,\n+    AllowLogonTerminalServer: DWORD,\n+    TimeoutSettingsConnections: DWORD,\n+    TimeoutSettingsDisconnections: DWORD,\n+    TimeoutSettingsIdle: DWORD,\n+    DeviceClientDrives: DWORD,\n+    DeviceClientPrinters: DWORD,\n+    ClientDefaultPrinter: DWORD,\n+    BrokenTimeoutSettings: DWORD,\n+    ReconnectSettings: DWORD,\n+    ShadowingSettings: DWORD,\n+    TerminalServerRemoteHomeDir: DWORD,\n+    InitialProgram: [WCHAR; MAX_PATH + 1],\n+    WorkDirectory: [CHAR; MAX_PATH + 1],\n+    TerminalServerProfilePath: [CHAR; MAX_PATH + 1],\n+    TerminalServerHomeDir: [CHAR; MAX_PATH + 1],\n+    TerminalServerHomeDirDrive: [CHAR; WTS_DRIVE_LENGTH + 1],\n+}}\n+pub type PWTSUSERCONFIGW = *mut WTSUSERCONFIGW;\n+pub const WTS_EVENT_NONE: DWORD = 0x00000000;\n+pub const WTS_EVENT_CREATE: DWORD = 0x00000001;\n+pub const WTS_EVENT_DELETE: DWORD = 0x00000002;\n+pub const WTS_EVENT_RENAME: DWORD = 0x00000004;\n+pub const WTS_EVENT_CONNECT: DWORD = 0x00000008;\n+pub const WTS_EVENT_DISCONNECT: DWORD = 0x00000010;\n+pub const WTS_EVENT_LOGON: DWORD = 0x00000020;\n+pub const WTS_EVENT_LOGOFF: DWORD = 0x00000040;\n+pub const WTS_EVENT_STATECHANGE: DWORD = 0x00000080;\n+pub const WTS_EVENT_LICENSE: DWORD = 0x00000100;\n+pub const WTS_EVENT_ALL: DWORD = 0x7fffffff;\n+pub const WTS_EVENT_FLUSH: DWORD = 0x80000000;\n+pub const REMOTECONTROL_KBDSHIFT_HOTKEY: DWORD = 0x1;\n+pub const REMOTECONTROL_KBDCTRL_HOTKEY: DWORD = 0x2;\n+pub const REMOTECONTROL_KBDALT_HOTKEY: DWORD = 0x4;\n+ENUM!{enum WTS_VIRTUAL_CLASS {\n+    WTSVirtualClientData,\n+    WTSVirtualFileHandle,\n+}}\n+STRUCT!{struct WTS_SESSION_ADDRESS {\n+    AddressFamily: DWORD,\n+    Address: [BYTE; 20],\n+}}\n+pub type PWTS_SESSION_ADDRESS = *mut WTS_SESSION_ADDRESS;\n+extern \"system\" {\n+    pub fn WTSStopRemoteControlSession(LogonId: ULONG) -> BOOL;","path":"src/um/wtsapi32.rs","position":474,"original_position":474,"commit_id":"8a331d45e778faa31f44331ff34c10a2600cf3ec","original_commit_id":"8a331d45e778faa31f44331ff34c10a2600cf3ec","user":{"login":"Connicpu","id":967877,"node_id":"MDQ6VXNlcjk2Nzg3Nw==","avatar_url":"https://avatars1.githubusercontent.com/u/967877?v=4","gravatar_id":"","url":"https://api.github.com/users/Connicpu","html_url":"https://github.com/Connicpu","followers_url":"https://api.github.com/users/Connicpu/followers","following_url":"https://api.github.com/users/Connicpu/following{/other_user}","gists_url":"https://api.github.com/users/Connicpu/gists{/gist_id}","starred_url":"https://api.github.com/users/Connicpu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Connicpu/subscriptions","organizations_url":"https://api.github.com/users/Connicpu/orgs","repos_url":"https://api.github.com/users/Connicpu/repos","events_url":"https://api.github.com/users/Connicpu/events{/privacy}","received_events_url":"https://api.github.com/users/Connicpu/received_events","type":"User","site_admin":false},"body":"One parameter per line~","created_at":"2018-07-28T06:21:22Z","updated_at":"2018-07-28T06:38:00Z","html_url":"https://github.com/retep998/winapi-rs/pull/650#discussion_r205934602","pull_request_url":"https://api.github.com/repos/retep998/winapi-rs/pulls/650","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/comments/205934602"},"html":{"href":"https://github.com/retep998/winapi-rs/pull/650#discussion_r205934602"},"pull_request":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/650"}}},"pull_request":{"url":"https://api.github.com/repos/retep998/winapi-rs/pulls/650","id":204574680,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0NTc0Njgw","html_url":"https://github.com/retep998/winapi-rs/pull/650","diff_url":"https://github.com/retep998/winapi-rs/pull/650.diff","patch_url":"https://github.com/retep998/winapi-rs/pull/650.patch","issue_url":"https://api.github.com/repos/retep998/winapi-rs/issues/650","number":650,"state":"open","locked":false,"title":"Add wtsapi32.","user":{"login":"ekse","id":77594,"node_id":"MDQ6VXNlcjc3NTk0","avatar_url":"https://avatars1.githubusercontent.com/u/77594?v=4","gravatar_id":"","url":"https://api.github.com/users/ekse","html_url":"https://github.com/ekse","followers_url":"https://api.github.com/users/ekse/followers","following_url":"https://api.github.com/users/ekse/following{/other_user}","gists_url":"https://api.github.com/users/ekse/gists{/gist_id}","starred_url":"https://api.github.com/users/ekse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekse/subscriptions","organizations_url":"https://api.github.com/users/ekse/orgs","repos_url":"https://api.github.com/users/ekse/repos","events_url":"https://api.github.com/users/ekse/events{/privacy}","received_events_url":"https://api.github.com/users/ekse/received_events","type":"User","site_admin":false},"body":"Based on 10.0.17134.0\\um\\WtsApi32.h.","created_at":"2018-07-28T03:53:35Z","updated_at":"2018-07-28T06:38:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"f936fd3d68adc25c9f3811e8578e657e7fa654b1","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/retep998/winapi-rs/pulls/650/commits","review_comments_url":"https://api.github.com/repos/retep998/winapi-rs/pulls/650/comments","review_comment_url":"https://api.github.com/repos/retep998/winapi-rs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/retep998/winapi-rs/issues/650/comments","statuses_url":"https://api.github.com/repos/retep998/winapi-rs/statuses/8a331d45e778faa31f44331ff34c10a2600cf3ec","head":{"label":"ekse:wtsapi32","ref":"wtsapi32","sha":"8a331d45e778faa31f44331ff34c10a2600cf3ec","user":{"login":"ekse","id":77594,"node_id":"MDQ6VXNlcjc3NTk0","avatar_url":"https://avatars1.githubusercontent.com/u/77594?v=4","gravatar_id":"","url":"https://api.github.com/users/ekse","html_url":"https://github.com/ekse","followers_url":"https://api.github.com/users/ekse/followers","following_url":"https://api.github.com/users/ekse/following{/other_user}","gists_url":"https://api.github.com/users/ekse/gists{/gist_id}","starred_url":"https://api.github.com/users/ekse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekse/subscriptions","organizations_url":"https://api.github.com/users/ekse/orgs","repos_url":"https://api.github.com/users/ekse/repos","events_url":"https://api.github.com/users/ekse/events{/privacy}","received_events_url":"https://api.github.com/users/ekse/received_events","type":"User","site_admin":false},"repo":{"id":142644512,"node_id":"MDEwOlJlcG9zaXRvcnkxNDI2NDQ1MTI=","name":"winapi-rs","full_name":"ekse/winapi-rs","owner":{"login":"ekse","id":77594,"node_id":"MDQ6VXNlcjc3NTk0","avatar_url":"https://avatars1.githubusercontent.com/u/77594?v=4","gravatar_id":"","url":"https://api.github.com/users/ekse","html_url":"https://github.com/ekse","followers_url":"https://api.github.com/users/ekse/followers","following_url":"https://api.github.com/users/ekse/following{/other_user}","gists_url":"https://api.github.com/users/ekse/gists{/gist_id}","starred_url":"https://api.github.com/users/ekse/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ekse/subscriptions","organizations_url":"https://api.github.com/users/ekse/orgs","repos_url":"https://api.github.com/users/ekse/repos","events_url":"https://api.github.com/users/ekse/events{/privacy}","received_events_url":"https://api.github.com/users/ekse/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ekse/winapi-rs","description":"Rust bindings to Windows API","fork":true,"url":"https://api.github.com/repos/ekse/winapi-rs","forks_url":"https://api.github.com/repos/ekse/winapi-rs/forks","keys_url":"https://api.github.com/repos/ekse/winapi-rs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ekse/winapi-rs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ekse/winapi-rs/teams","hooks_url":"https://api.github.com/repos/ekse/winapi-rs/hooks","issue_events_url":"https://api.github.com/repos/ekse/winapi-rs/issues/events{/number}","events_url":"https://api.github.com/repos/ekse/winapi-rs/events","assignees_url":"https://api.github.com/repos/ekse/winapi-rs/assignees{/user}","branches_url":"https://api.github.com/repos/ekse/winapi-rs/branches{/branch}","tags_url":"https://api.github.com/repos/ekse/winapi-rs/tags","blobs_url":"https://api.github.com/repos/ekse/winapi-rs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ekse/winapi-rs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ekse/winapi-rs/git/refs{/sha}","trees_url":"https://api.github.com/repos/ekse/winapi-rs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ekse/winapi-rs/statuses/{sha}","languages_url":"https://api.github.com/repos/ekse/winapi-rs/languages","stargazers_url":"https://api.github.com/repos/ekse/winapi-rs/stargazers","contributors_url":"https://api.github.com/repos/ekse/winapi-rs/contributors","subscribers_url":"https://api.github.com/repos/ekse/winapi-rs/subscribers","subscription_url":"https://api.github.com/repos/ekse/winapi-rs/subscription","commits_url":"https://api.github.com/repos/ekse/winapi-rs/commits{/sha}","git_commits_url":"https://api.github.com/repos/ekse/winapi-rs/git/commits{/sha}","comments_url":"https://api.github.com/repos/ekse/winapi-rs/comments{/number}","issue_comment_url":"https://api.github.com/repos/ekse/winapi-rs/issues/comments{/number}","contents_url":"https://api.github.com/repos/ekse/winapi-rs/contents/{+path}","compare_url":"https://api.github.com/repos/ekse/winapi-rs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ekse/winapi-rs/merges","archive_url":"https://api.github.com/repos/ekse/winapi-rs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ekse/winapi-rs/downloads","issues_url":"https://api.github.com/repos/ekse/winapi-rs/issues{/number}","pulls_url":"https://api.github.com/repos/ekse/winapi-rs/pulls{/number}","milestones_url":"https://api.github.com/repos/ekse/winapi-rs/milestones{/number}","notifications_url":"https://api.github.com/repos/ekse/winapi-rs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ekse/winapi-rs/labels{/name}","releases_url":"https://api.github.com/repos/ekse/winapi-rs/releases{/id}","deployments_url":"https://api.github.com/repos/ekse/winapi-rs/deployments","created_at":"2018-07-28T03:46:31Z","updated_at":"2018-07-28T03:46:39Z","pushed_at":"2018-07-28T03:52:57Z","git_url":"git://github.com/ekse/winapi-rs.git","ssh_url":"git@github.com:ekse/winapi-rs.git","clone_url":"https://github.com/ekse/winapi-rs.git","svn_url":"https://github.com/ekse/winapi-rs","homepage":"https://crates.io/crates/winapi","size":18317,"stargazers_count":0,"watchers_count":0,"language":"Rust","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"0.3"}},"base":{"label":"retep998:0.3","ref":"0.3","sha":"3fef59e111a90e5fba30afb3609d893027802d93","user":{"login":"retep998","id":666308,"node_id":"MDQ6VXNlcjY2NjMwOA==","avatar_url":"https://avatars1.githubusercontent.com/u/666308?v=4","gravatar_id":"","url":"https://api.github.com/users/retep998","html_url":"https://github.com/retep998","followers_url":"https://api.github.com/users/retep998/followers","following_url":"https://api.github.com/users/retep998/following{/other_user}","gists_url":"https://api.github.com/users/retep998/gists{/gist_id}","starred_url":"https://api.github.com/users/retep998/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/retep998/subscriptions","organizations_url":"https://api.github.com/users/retep998/orgs","repos_url":"https://api.github.com/users/retep998/repos","events_url":"https://api.github.com/users/retep998/events{/privacy}","received_events_url":"https://api.github.com/users/retep998/received_events","type":"User","site_admin":false},"repo":{"id":23853482,"node_id":"MDEwOlJlcG9zaXRvcnkyMzg1MzQ4Mg==","name":"winapi-rs","full_name":"retep998/winapi-rs","owner":{"login":"retep998","id":666308,"node_id":"MDQ6VXNlcjY2NjMwOA==","avatar_url":"https://avatars1.githubusercontent.com/u/666308?v=4","gravatar_id":"","url":"https://api.github.com/users/retep998","html_url":"https://github.com/retep998","followers_url":"https://api.github.com/users/retep998/followers","following_url":"https://api.github.com/users/retep998/following{/other_user}","gists_url":"https://api.github.com/users/retep998/gists{/gist_id}","starred_url":"https://api.github.com/users/retep998/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/retep998/subscriptions","organizations_url":"https://api.github.com/users/retep998/orgs","repos_url":"https://api.github.com/users/retep998/repos","events_url":"https://api.github.com/users/retep998/events{/privacy}","received_events_url":"https://api.github.com/users/retep998/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/retep998/winapi-rs","description":"Rust bindings to Windows API","fork":false,"url":"https://api.github.com/repos/retep998/winapi-rs","forks_url":"https://api.github.com/repos/retep998/winapi-rs/forks","keys_url":"https://api.github.com/repos/retep998/winapi-rs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/retep998/winapi-rs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/retep998/winapi-rs/teams","hooks_url":"https://api.github.com/repos/retep998/winapi-rs/hooks","issue_events_url":"https://api.github.com/repos/retep998/winapi-rs/issues/events{/number}","events_url":"https://api.github.com/repos/retep998/winapi-rs/events","assignees_url":"https://api.github.com/repos/retep998/winapi-rs/assignees{/user}","branches_url":"https://api.github.com/repos/retep998/winapi-rs/branches{/branch}","tags_url":"https://api.github.com/repos/retep998/winapi-rs/tags","blobs_url":"https://api.github.com/repos/retep998/winapi-rs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/retep998/winapi-rs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/retep998/winapi-rs/git/refs{/sha}","trees_url":"https://api.github.com/repos/retep998/winapi-rs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/retep998/winapi-rs/statuses/{sha}","languages_url":"https://api.github.com/repos/retep998/winapi-rs/languages","stargazers_url":"https://api.github.com/repos/retep998/winapi-rs/stargazers","contributors_url":"https://api.github.com/repos/retep998/winapi-rs/contributors","subscribers_url":"https://api.github.com/repos/retep998/winapi-rs/subscribers","subscription_url":"https://api.github.com/repos/retep998/winapi-rs/subscription","commits_url":"https://api.github.com/repos/retep998/winapi-rs/commits{/sha}","git_commits_url":"https://api.github.com/repos/retep998/winapi-rs/git/commits{/sha}","comments_url":"https://api.github.com/repos/retep998/winapi-rs/comments{/number}","issue_comment_url":"https://api.github.com/repos/retep998/winapi-rs/issues/comments{/number}","contents_url":"https://api.github.com/repos/retep998/winapi-rs/contents/{+path}","compare_url":"https://api.github.com/repos/retep998/winapi-rs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/retep998/winapi-rs/merges","archive_url":"https://api.github.com/repos/retep998/winapi-rs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/retep998/winapi-rs/downloads","issues_url":"https://api.github.com/repos/retep998/winapi-rs/issues{/number}","pulls_url":"https://api.github.com/repos/retep998/winapi-rs/pulls{/number}","milestones_url":"https://api.github.com/repos/retep998/winapi-rs/milestones{/number}","notifications_url":"https://api.github.com/repos/retep998/winapi-rs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/retep998/winapi-rs/labels{/name}","releases_url":"https://api.github.com/repos/retep998/winapi-rs/releases{/id}","deployments_url":"https://api.github.com/repos/retep998/winapi-rs/deployments","created_at":"2014-09-09T23:18:24Z","updated_at":"2018-07-28T06:20:36Z","pushed_at":"2018-07-28T06:20:32Z","git_url":"git://github.com/retep998/winapi-rs.git","ssh_url":"git@github.com:retep998/winapi-rs.git","clone_url":"https://github.com/retep998/winapi-rs.git","svn_url":"https://github.com/retep998/winapi-rs","homepage":"https://crates.io/crates/winapi","size":18323,"stargazers_count":467,"watchers_count":467,"language":"Rust","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":179,"mirror_url":null,"archived":false,"open_issues_count":83,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":179,"open_issues":83,"watchers":467,"default_branch":"0.3"}},"_links":{"self":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/650"},"html":{"href":"https://github.com/retep998/winapi-rs/pull/650"},"issue":{"href":"https://api.github.com/repos/retep998/winapi-rs/issues/650"},"comments":{"href":"https://api.github.com/repos/retep998/winapi-rs/issues/650/comments"},"review_comments":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/650/comments"},"review_comment":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/retep998/winapi-rs/pulls/650/commits"},"statuses":{"href":"https://api.github.com/repos/retep998/winapi-rs/statuses/8a331d45e778faa31f44331ff34c10a2600cf3ec"}},"author_association":"NONE"}}
{"actor":{"display_login":"Connicpu"}}