Как сопоставить типы Win32 с типами C # при использовании P / Invoke?
Я пытаюсь сделать что-то вродеэтот в C #. Я узнал, как вызывать методы Win32 из C #, используя P / Invokeпо этой ссылке, Однако я столкнулся с некоторыми трудностями при реализации P / Invoke.
Например, один из методов, к которым я хотел бы получить доступ,PdhOpenQueryПодпись:
PDH_STATUS PdhOpenQuery(
__in LPCTSTR szDataSource,
__in DWORD_PTR dwUserData,
__out PDH_HQUERY *phQuery
);
Я полагаю, что соответствующее объявление C # должно быть что-то вроде этого
[DllImport("Pdh.dll")]
static extern PDH_STATUS PdhOpenQuery(LPCTSTR szDataSource,
DWORD_PTR dwUserData, out PDH_HQUERY *phQuery);
Мои вопросы:
Что такое LPCTSTR и какой тип данных он отображает в C #?
Как отобразить указатель типа DWORD_PTR? Статья pinvoke говорит, что DWORD сопоставляется с UInt32, но как насчет указателей?
Я думаю, что PDH_STATUS и PDH_HQUERY являются специфической структурой для библиотеки (я пока не уверен). как мне это сопоставить?
Что такое правильное объявление метода и как вы правильно его называете?