0

所以,我想在 C# 中使用 CreateProcess API 函数。我知道我必须导入 kernel32.dll 文件并覆盖函数头并将其标记为 extern。我也知道我必须实现函数使用的结构。我遇到的问题如下:我在哪里可以看到我需要实现的结构的确切结构?

[DllImport("Kernel32.dll")]
public static extern HANDLE CreateThread(PSECURITY_ATTRIBUTES psa,
                                             DWORD cbStack,
                                             PTHREAD_START_ROUTINE pfnStartAddr,
                                             PVOID pvParam,
                                             DWORD fwdCreate,
                                             PDWORD pdwThreadID);

我需要实现以下结构才能使其正常工作:HANDLE、DWORD ...以及其余的我该怎么做?

4

3 回答 3

5

您不需要重新实现这些类型。您只需要将它们翻译成相应的 .NET 等效项:

平台调用数据类型

您可能还想知道 .NET 有自己的创建线程和进程的方式:

进程类(System.Diagnostics)

线程类 (System.Threading)

于 2013-04-09T19:06:30.050 回答
3

您可以使用pinvoke.net作为 Win32 API 翻译的来源。例如,以下是您感兴趣的两个:

请注意,那里的翻译质量参差不齐。例如,CreateThread上面的链接有两个版本。其中只有一个是准确的。是哪一个一目了然!

更一般地说,您应该好好阅读 MSDN p/invoke 教程Marshaling Data with Platform Invoke

于 2013-04-09T19:01:42.760 回答
1

我发现 MSDN 主题Windows 数据类型有助于识别 Windows DLL 中使用的各种类型别名。

于 2013-04-09T19:08:41.893 回答