【发布时间】:2010-08-30 06:08:21
【问题描述】:
我正在尝试在 C# 中做类似this 的事情。我发现了如何使用 P/Invoke from this link 从 C# 调用 Win32 方法。但是我在实现 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 是库的特定结构(我还不确定)。我如何映射这些?
什么是正确的方法声明,如何正确调用?
【问题讨论】:
标签: c# winapi pinvoke performancecounter