Comment carte Win32 types de C# types lors de l'utilisation de P/Invoke?

Je suis en train de faire quelque chose comme cette en C#. J'ai trouvé comment appeler méthodes Win32 en C# à l'aide de P/Invoke à partir de ce lien. Cependant, j'ai rencontré quelques difficultés dans la mise en œuvre de P/Invoke.

Par exemple, l'une des méthodes que j'aimerais que l'accès est PdhOpenQuery,
signature:

PDH_STATUS PdhOpenQuery(
  __in   LPCTSTR szDataSource,
  __in   DWORD_PTR dwUserData,
  __out  PDH_HQUERY *phQuery
);

Je figure le C# correspondant déclaration doit être quelque chose comme ceci

    [DllImport("Pdh.dll")]
    static extern PDH_STATUS PdhOpenQuery(LPCTSTR szDataSource, 
        DWORD_PTR dwUserData, out PDH_HQUERY *phQuery);

Mes questions:

Qu'est-ce que LPCTSTR, et pour ce type de données est-il de la carte en C#?

Comment mapper un pointeur de type DWORD_PTR? Pinvoke article dit DWORD cartes à UInt32, mais comment sur les pointeurs?

Je pense que PDH_STATUS et PDH_HQUERY sont spécifiques struct à la bibliothèque (je ne suis pas encore sûr). comment puis-je faire correspondre ces?

Quelle est la bonne méthode de déclaration, et comment l'appelez-vous correctement?

InformationsquelleAutor Louis Rhys | 2010-08-30