如何在 C#.NET 和 C Win32 DLL 之间传递句柄?
我有一个 C#.NET 应用程序和一个非托管 C Win32 .DLL 程序。 我如何在两个应用程序之间传递句柄? 我的意思是我想将 C 代码中的句柄设置为来自 C# 的输出参数,然后再次将 C# 中的句柄传递给 DLL 中的另一个函数? 我猜它与 IntPtr 有关,但我不知道 C & 是什么? C#代码应该是!
谢谢。
I have a C#.NET application and an unmanaged C Win32 .DLL program.
How can i pass HANDLEs between the two app?
i mean i wanna set a HANDLE from C code to a output parameter that comes from C#, and again, pass the HANDLE from C# to another function in the DLL?
I guess it is related to IntPtr, but i don't know what the C & C# code should be!
thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要从 C# 调用 C 代码,您可以使用 DllImportAttribute 将参数指示为 IntPtr:
只需确保您的 C 函数如下所示:
To call C code from C#, you can use the DllImportAttribute to indicate the parameter as IntPtr:
Just make sure that your C functions look like this:
只需将其转换为 C 代码中的 IntPtr 类型即可。
Just cast it ti IntPtr type in C code.
HANDLE
被定义为void*
,即指针大小的东西。托管世界中的等效项是IntPtr
。HANDLE
is defined asvoid*
, i.e. something the size of a pointer. The equivalent in the managed world isIntPtr
.