Wie werden Win32-Typen bei Verwendung von P / Invoke C # -Typen zugeordnet?

Ich versuche etwas zu tun wieDie in C #. Ich fand heraus, wie man Win32-Methoden von C # mit P / Invoke @ aufruvon diesem Link. Bei der Implementierung von P / Invoke sind mir jedoch einige Schwierigkeiten begegnet.

Zum Beispiel ist eine der Methoden, auf die ich zugreifen möchte, PdhOpenQuery, Unterschrift

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

Ich denke, die entsprechende C # -Deklaration sollte ungefähr so aussehen

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

Meine Fragen

Was ist LPCTSTR und welchem Datentyp wird es in C # zugeordnet?
Wie ordne ich einen Zeigertyp DWORD_PTR zu? Der Pinvoke-Artikel besagt, dass DWORD UInt32 zugeordnet ist, aber wie steht es mit Zeigern?
Ich denke, PDH_STATUS und PDH_HQUERY sind spezifische Strukturen für die Bibliothek (ich bin mir noch nicht sicher). Wie ordne ich diese zu?

Was ist die richtige Methodendeklaration und wie nennt man sie richtig?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage