IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] [WTS] Pointeur vers un pointeur de long, comment reprendre la valeur?


Sujet :

C#

  1. #1
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut [C#] [WTS] Pointeur vers un pointeur de long, comment reprendre la valeur?
    Bonjour,

    J'essaie de récupérer les différentes informations d'une session WTS et je butte sur la reprise d'informations au niveau des pointeurs.

    Je m'explique :

    Via la dll wtsapi32, il est possible de récupérer les informations d'une session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [DllImport("wtsapi32", CharSet=CharSet.Auto)]
    static extern Boolean WTSQuerySessionInformation(IntPtr hServer, Int32 SessionId,
    WTS_INFO_CLASS InfoClass, ref IntPtr ppBuffer, ref Int32 pCount);
    où WTS_INFO_CLASS est définie de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    public enum WTS_INFO_CLASS
    {
        WTSInitialProgram = 0,
        WTSApplicationName = 1,
        WTSWorkingDirectory = 2,
        WTSOEMId = 3,
        WTSSessionId = 4,
        WTSUserName = 5,
        WTSWinStationName = 6,
        WTSDomainName = 7,
        WTSConnectState = 8,
        WTSClientBuildNumber = 9,
        WTSClientName = 10,
        WTSClientDirectory = 11,
        WTSClientProductId = 12,
        WTSClientHardwareId = 13,
        WTSClientAddress = 14,
        WTSClientDisplay = 15,
        WTSClientProtocolType = 16,
        WTSIdleTime = 17,
        WTSLogonTime = 18,
        WTSIncomingBytes = 19,
        WTSOutgoingBytes = 20,
        WTSIncomingFrames = 21,
        WTSOutgoingFrames = 22,
    };
    Pour faire un test, je lance donc sur la session courante du serveur courant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WTSQuerySessionInformation(IntPtr.Zero, -1, WTSInfoClassType, ref Buffer, ref bytesReturned);
    Pour voir les types, voir msdn http://msdn2.microsoft.com/en-us/library/aa383861.aspx

    Pour reprendre les champs de type string, pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Runtime.InteropServices.Marshal.PtrToStringAuto(Buffer);
    Pour les champs de type structure (ClientDisplay et ClientAdress), pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    if (WTSInfoClassType == WTS_INFO_CLASS.WTSClientAddress)
    {
        WtsClientAddress WtsCa = (WtsClientAddress)Marshal.PtrToStructure(Buffer, typeof(WtsClientAddress));
        return WtsCa.Address[2].ToString() + "." + WtsCa.Address[3].ToString() + "." + WtsCa.Address[4].ToString() + "." + WtsCa.Address[5].ToString();
    }
    if (WTSInfoClassType == WTS_INFO_CLASS.WTSClientDisplay)
    {
        WtsClientDisplay WtsCd = (WtsClientDisplay)Marshal.PtrToStructure(Buffer, typeof(WtsClientDisplay));
        return "HorizontalResolution" + WtsCd.HorizontalResolution.ToString()+" | VerticalResolution : " + WtsCd.VerticalResolution.ToString() + " | ColorDepth : " + WtsCd.ColorDepth.ToString();
    }
    Mais comment faire pour les autres types (Ulong et Ushort) ?

    Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.
    Piet

  2. #2
    Membre régulier Avatar de Piet
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 108
    Points
    108
    Par défaut
    Ne vous posez plus la question ; j'ai trouvé !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return Marshal.ReadInt32(Buffer);
    Voilà qui est résolu... Désolé pour le dérangement.
    Piet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  2. Pointeur vers un pointeur de propriété membre managé
    Par Alain Defrance dans le forum C++/CLI
    Réponses: 5
    Dernier message: 20/05/2008, 08h46
  3. Réponses: 12
    Dernier message: 31/12/2005, 16h01
  4. Pointeur vers fonction
    Par flopaname dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2005, 15h46
  5. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo