【发布时间】:2011-11-22 23:45:18
【问题描述】:
我正在尝试将 C# 项目转换为 Delphi,C# 代码本身正在从本机 dll 导入函数,让我们将其命名为“dmp.dll”,我没有其本机函数的签名,我必须查看如何在 c# 中导入这些函数并尝试在 Delphi 代码中导入它们,我确实导入了很多它们并且它们工作正常,但现在我正在努力使用这个函数 (StartLogging)。这就是他们在 C# 中导入的方式:
[DllImport("dmp.dll", CharSet = CharSet.Auto, EntryPoint = "StartLogging")]
public static extern int StartLogging(String AdapterName,
PLOG_RECORD_CALLBACK LogRecordCallback,
SafeWaitHandle StopLoggingEvent);
PLOG_RECORD_CALLBACK 没有问题,但问题出在这个参数SafeWaitHandle 上,它是Microsoft.Win32.SafeHandles 命名空间中存在的类。我怎样才能将它移植到德尔福? Delphi中与之等效的数据类型是什么?
这是他们在 C# 代码中使用它的方式:
AutoResetEvent StopEvent = new AutoResetEvent(false);
AutoResetEvent 类存在于System.Threading
然后他们像这样调用方法:
StartLogging(comboBox1.Text, CallbackProcedure, StopEvent.SafeWaitHandle);
然后最后停止他们使用的日志记录:
StopEvent.Set();
我真的很困惑,我不知道该怎么做,感谢您的帮助。 谢谢
【问题讨论】:
-
在这种情况下,它听起来像一个事件句柄。由 CreateEvent API 返回。不记得 Delphi RTL 是否提供 TEvent 包装器。