Пример #1
0
 private static extern bool WTSQuerySessionInformationW(
     IntPtr hServer,
     int sessionId,
     WTS_INFO_CLASS wtsInfoClass,
     out IntPtr ppBuffer,
     out int bytesReturned
     );
Пример #2
0
        private static T QuerySessionInfo <T>(System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr ppBuffer = IntPtr.Zero;
            uint   pBytesReturned;

            if (WTSQuerySessionInformation(hServer, sessionId, wtsInfoClass, out ppBuffer, out pBytesReturned))
            {
                try
                {
                    T result;
                    if (typeof(T).IsEnum)
                    {
                        Type underlyingType = Enum.GetUnderlyingType(typeof(T));
                        result = (T)Marshal.PtrToStructure(ppBuffer, underlyingType);
                    }
                    else
                    {
                        result = (T)Marshal.PtrToStructure(ppBuffer, typeof(T));
                    }

                    return(result);
                }
                finally
                {
                    WTSFreeMemory(ppBuffer);
                    ppBuffer = IntPtr.Zero;
                }
            }
            return(default(T));
        }
Пример #3
0
 internal static extern bool WTSQuerySessionInformation(
     IntPtr hServer,
     int SessionId,
     WTS_INFO_CLASS WTSInfoClass,
     out IntPtr ppBuffer,
     out int pBytesReturned
     );
Пример #4
0
 public static extern bool WTSQuerySessionInformation(
     IntPtr hServer,
     uint sessionId,
     WTS_INFO_CLASS wtsInfoClass,
     out IntPtr ppBuffer,
     out uint pBytesReturned
     );
Пример #5
0
 private static extern int WTSQuerySessionInformation(
     IntPtr hServer,
     [MarshalAs(UnmanagedType.U4)] uint SessionId,
     [MarshalAs(UnmanagedType.U4)] WTS_INFO_CLASS WTSInfoClass,
     out IntPtr ppBuffer,
     [MarshalAs(UnmanagedType.U4)] out uint pBytesReturned
     );
Пример #6
0
        internal static string GetUserSessionQueryInfo(int sessionId, WTS_INFO_CLASS info)
        {
            IntPtr buffer = IntPtr.Zero;
            uint   bytesReturned;
            string queryInfo = null;

            if (sessionId < 0)
            {
                throw new ArgumentOutOfRangeException("sessionId");
            }

            try
            {
                if (!WTSQuerySessionInformation(IntPtr.Zero, sessionId, info, out buffer, out bytesReturned))
                {
                    throw new Win32Exception();
                }

                queryInfo = Marshal.PtrToStringAuto(buffer);
            }
            finally
            {
                if (buffer != IntPtr.Zero)
                {
                    WTSFreeMemory(buffer);
                    buffer = IntPtr.Zero;
                }
            }

            return(queryInfo);
        }
Пример #7
0
        public static string QuerySessionInformation(int SessionId, WTS_INFO_CLASS info, IntPtr hServer)
        {
            IntPtr AnswerBytes;
            IntPtr AnswerCount;

            WTSQuerySessionInformationW(hServer, SessionId, (int)info, out AnswerBytes, out AnswerCount);
            return(Marshal.PtrToStringUni(AnswerBytes));
        }
        public static T QuerySessionInformationForStruct <T>(ITerminalServerHandle server, int sessionId,
                                                             WTS_INFO_CLASS infoClass) where T : struct
        {
            ProcessSessionCallback <T> callback =
                delegate(IntPtr mem, int returned) { return((T)Marshal.PtrToStructure(mem, typeof(T))); };

            return(QuerySessionInformation(server, sessionId, infoClass, callback));
        }
        public static string QuerySessionInformationForString(ITerminalServerHandle server, int sessionId,
                                                              WTS_INFO_CLASS infoClass)
        {
            ProcessSessionCallback <string> callback =
                delegate(IntPtr mem, int returned) { return(Marshal.PtrToStringAuto(mem)); };

            return(QuerySessionInformation(server, sessionId, infoClass, callback));
        }
Пример #10
0
        private static string GetString(IntPtr ptrOpenedServer, int active_session, WTS_INFO_CLASS whichOne)
        {
            var str      = IntPtr.Zero;
            var returned = 0;

            if (WTSQuerySessionInformation(ptrOpenedServer, active_session, whichOne, ref str, ref returned))
            {
                return(Marshal.PtrToStringAuto(str));
            }
            return("");
        }
Пример #11
0
        static string GetSessionString(int sessionId, WTS_INFO_CLASS info)
        {
            if (!WTSQuerySessionInformation(IntPtr.Zero, sessionId, info, out IntPtr bytes, out uint byteCount))
            {
                return("");
            }
            var infoString = Marshal.PtrToStringAnsi(bytes);

            WTSFreeMemory(bytes);
            return(infoString);
        }
Пример #12
0
        private static string GetWTSInformation(WTS_INFO_CLASS whatInfoNeeded)
        {
            IntPtr buffer = IntPtr.Zero;
            Int32  bytesReturned;

            string strClientName = "";

            try
            {
                WTS_CURRENT_SERVER_HANDLE = IntPtr.Zero;
                bool sucess = WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION, whatInfoNeeded, out buffer, out bytesReturned);
                if (sucess)
                {
                    if (whatInfoNeeded == WTS_INFO_CLASS.WTSClientAddress)
                    {
                        WTS_CLIENT_ADDRESS oClientAddres = new WTS_CLIENT_ADDRESS();
                        try
                        {
                            oClientAddres = (WTS_CLIENT_ADDRESS)System.Runtime.InteropServices.Marshal.PtrToStructure(buffer, oClientAddres.GetType());
                        }
                        catch
                        {
                        }
                        strClientName = oClientAddres.bAddress[2] + "." + oClientAddres.bAddress[3] + "." + oClientAddres.bAddress[4] + "." + oClientAddres.bAddress[5];
                    }
                    else
                    {
                        strClientName = System.Runtime.InteropServices.Marshal.PtrToStringAnsi(buffer);
                    }
                }
            }
            catch
            {
            }

            finally
            {
                if (buffer != IntPtr.Zero)
                {
                    try
                    {
                        WTSFreeMemory(buffer);
                    }
                    catch
                    {
                    }
                    buffer = IntPtr.Zero;
                }
            }
            return(strClientName);
        }
Пример #13
0
        public static String getTerminalInfoString(WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr pBuf = IntPtr.Zero;
            uint   pBytesReturned;

            WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,
                                       WTS_CURRENT_SESSION,
                                       wtsInfoClass,
                                       out pBuf,
                                       out pBytesReturned);

            String result = Marshal.PtrToStringAnsi(pBuf);

            WTSFreeMemory(pBuf);

            return(result);
        }
Пример #14
0
        public static byte[] getTerminalInfo(WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr pBuf = IntPtr.Zero;
            uint   pBytesReturned;

            WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE,
                                       WTS_CURRENT_SESSION,
                                       wtsInfoClass,
                                       out pBuf,
                                       out pBytesReturned);

            byte[] buf = new byte[pBytesReturned];
            Marshal.Copy(pBuf, buf, 0, (int)pBytesReturned);

            WTSFreeMemory(pBuf);
            return(buf);
        }
Пример #15
0
        private static string QuerySessionInfo(System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr ppBuffer = IntPtr.Zero;
            uint   pBytesReturned;

            if (WTSQuerySessionInformation(hServer, sessionId, wtsInfoClass, out ppBuffer, out pBytesReturned))
            {
                try
                {
                    return(Marshal.PtrToStringAnsi(ppBuffer));
                }
                finally
                {
                    WTSFreeMemory(ppBuffer);
                    ppBuffer = IntPtr.Zero;
                }
            }
            return(String.Empty);
        }
Пример #16
0
 private static string QuerySessionInfo(IntPtr server, int sessionId, WTS_INFO_CLASS infoClass)
 {
     IntPtr buffer = IntPtr.Zero;
     try
     {
         uint bytesReturned;
         WTSQuerySessionInformation(server, sessionId, infoClass, out buffer, out bytesReturned);
         return Marshal.PtrToStringAnsi(buffer);
     }
     catch (Exception exc)
     {
         Log.Info("", exc);
         return String.Empty;
     }
     finally
     {
         WTSFreeMemory(buffer);
         buffer = IntPtr.Zero;
     }
 }
Пример #17
0
        private static string QuerySessionInfo(IntPtr server, int sessionId, WTS_INFO_CLASS infoClass)
        {
            IntPtr buffer = IntPtr.Zero;

            try
            {
                uint bytesReturned;
                WTSQuerySessionInformation(server, sessionId, infoClass, out buffer, out bytesReturned);
                return(Marshal.PtrToStringAnsi(buffer));
            }
            catch (Exception exc)
            {
                Log.Info("", exc);
                return(String.Empty);
            }
            finally
            {
                WTSFreeMemory(buffer);
                buffer = IntPtr.Zero;
            }
        }
Пример #18
0
        private static T QuerySessionInformation <T>(int sessionId, WTS_INFO_CLASS infoClass, ProcessSessionCallback <T> callback)
        {
            int    returned;
            IntPtr mem;

            if (WTSQuerySessionInformation(IntPtr.Zero, sessionId, infoClass, out mem, out returned))
            {
                try
                {
                    return(callback(mem, returned));
                }
                finally
                {
                    if (mem != IntPtr.Zero)
                    {
                        WTSFreeMemory(mem);
                    }
                }
            }
            throw new Win32Exception();
        }
        private static T QuerySessionInformation <T>(ITerminalServerHandle server, int sessionId,
                                                     WTS_INFO_CLASS infoClass, ProcessSessionCallback <T> callback)
        {
            int    returned;
            IntPtr mem;

            if (NativeMethods.WTSQuerySessionInformation(server.Handle, sessionId, infoClass, out mem, out returned))
            {
                try
                {
                    return(callback(mem, returned));
                }
                finally
                {
                    NativeMethods.WTSFreeMemory(mem);
                }
            }
            else
            {
                throw new Win32Exception();
            }
        }
Пример #20
0
 public static extern bool WTSQuerySessionInformation(IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass,
     out IntPtr buffer, out int bytesReturned);
Пример #21
0
 public static short QuerySessionInformationForShort(int sessionId, WTS_INFO_CLASS infoClass)
 {
     return(QuerySessionInformation(sessionId, infoClass, (mem, returned) => Marshal.ReadInt16(mem)));
 }
Пример #22
0
 public static extern Boolean WTSQuerySessionInformation(IntPtr serverHandle, Int32 sessionId, WTS_INFO_CLASS wtsInfoClass, out IntPtr ppBuffer, out UInt32 pBytesReturned);
Пример #23
0
 public static extern bool WTSQuerySessionInformation(
     IntPtr pServer,
     int iSessionID,
     WTS_INFO_CLASS oInfoClass,
     out IntPtr pBuffer,
     out uint iBytesReturned);
Пример #24
0
 private static extern bool WTSQuerySessionInformation2(System.IntPtr hServer, int SessionId, WTS_INFO_CLASS WTSInfoClass, ref IntPtr ppBuffer, ref Int32 pCount);
Пример #25
0
 public static string QuerySessionInformation(int SessionId, WTS_INFO_CLASS info)
 {
     return(QuerySessionInformation(SessionId, info, IntPtr.Zero));
 }
Пример #26
0
 public static extern bool WTSQuerySessionInformation(int ServerHandle, int SessionID,
     WTS_INFO_CLASS InfoClass,
     out WTS_CLIENT_DISPLAY[] Buffer,
     out int BytesReturned);
Пример #27
0
        public static String getTerminalInfoString(WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr pBuf = IntPtr.Zero;
            uint pBytesReturned;
            WTSQuerySessionInformation (WTS_CURRENT_SERVER_HANDLE,
                WTS_CURRENT_SESSION,
                wtsInfoClass,
                out pBuf,
                out pBytesReturned);

            String result = Marshal.PtrToStringAnsi (pBuf);

            WTSFreeMemory (pBuf);

            return result;
        }
Пример #28
0
 public static T QuerySessionInformationForStruct <T>(ITerminalServerHandle server, int sessionId, WTS_INFO_CLASS infoClass) where T : struct
 {
     return(QuerySessionInformation(
                server,
                sessionId,
                infoClass,
                (buffer, returned) => (T)Marshal.PtrToStructure(buffer, typeof(T))));
 }
Пример #29
0
 public static string QuerySessionInformationForString(ITerminalServerHandle server, int sessionId, WTS_INFO_CLASS infoClass)
 {
     return(QuerySessionInformation(
                server,
                sessionId,
                infoClass,
                (buffer, returned) => buffer == IntPtr.Zero ? null : Marshal.PtrToStringAuto(buffer)));
 }
Пример #30
0
 public static extern bool WTSQuerySessionInformation(
     System.IntPtr pServer,
     int iSessionID,
     WTS_INFO_CLASS oInfoClass,
     out System.IntPtr pBuffer,
     out uint iBytesReturned);
Пример #31
0
        private static string GetString(IntPtr ptrOpenedServer, int active_session, WTS_INFO_CLASS whichOne)
        {
            IntPtr str = IntPtr.Zero;
            int returned = 0;

            if (WTSQuerySessionInformation(ptrOpenedServer, active_session, whichOne, ref str, ref returned))
            {
                return Marshal.PtrToStringAuto(str);
            }

            return "";
        }
Пример #32
0
 public static extern bool WTSQuerySessionInformation(System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass, ref System.IntPtr ppBuffer, ref int pBytesReturned);
Пример #33
0
 private static extern bool WTSQuerySessionInformation(IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass,
                                                      ref IntPtr ppBuffer, ref int pBytesReturned);
Пример #34
0
 internal static extern bool WTSQuerySessionInformation(IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass, out StringBuilder ppBuffer, out int pBytesReturned);
Пример #35
0
 private static extern bool WTSQuerySessionInformation2(IntPtr hServer, int SessionId,
                                                        WTS_INFO_CLASS WTSInfoClass, ref IntPtr ppBuffer,
                                                        ref Int32 pCount);
Пример #36
0
 public static short QuerySessionInformationForShort(ITerminalServerHandle server, int sessionId, WTS_INFO_CLASS infoClass)
 {
     return(QuerySessionInformation(server, sessionId, infoClass, (buffer, returned) => Marshal.ReadInt16(buffer)));
 }
Пример #37
0
        public static byte[] getTerminalInfo(WTS_INFO_CLASS wtsInfoClass)
        {
            IntPtr pBuf = IntPtr.Zero;
            uint pBytesReturned;
            WTSQuerySessionInformation (WTS_CURRENT_SERVER_HANDLE,
                WTS_CURRENT_SESSION,
                wtsInfoClass,
                out pBuf,
                out pBytesReturned);

            byte[] buf = new byte[pBytesReturned];
            Marshal.Copy (pBuf, buf, 0, (int)pBytesReturned);

            WTSFreeMemory (pBuf);
            return buf;
        }
Пример #38
0
        private static T QuerySessionInformation <T>(ITerminalServerHandle server, int sessionId, WTS_INFO_CLASS infoClass, ProcessSessionCallback <T> callback)
        {
            int returned;

            IntPtr buffer = IntPtr.Zero;

            try
            {
                if (NativeMethods.WTSQuerySessionInformation(server.Handle, sessionId, infoClass, out buffer, out returned))
                {
                    return(callback(buffer, returned));
                }
                else
                {
                    throw new Win32Exception();
                }
            }
            finally
            {
                if (buffer != IntPtr.Zero)
                {
                    NativeMethods.WTSFreeMemory(buffer);
                    buffer = IntPtr.Zero;
                }
            }
        }
Пример #39
0
 public static extern bool WTSQuerySessionInformationW(IntPtr hServer, uint SessionId, WTS_INFO_CLASS WTSInfoClass, ref IntPtr ppBuffer, ref uint pBytesReturned);
Пример #40
0
 public static extern bool WTSQuerySessionInformation(System.IntPtr hServer, int sessionId, WTS_INFO_CLASS wtsInfoClass, out System.IntPtr ppBuffer, out uint pBytesReturned);
Пример #41
0
 private static extern bool WTSQuerySessionInformation(IntPtr hServer, uint SessionId, WTS_INFO_CLASS WTSInfoClass, out IntPtr ppBuffer, out int pBytesReturned);