私はC#プロジェクトをDelphiに変換しようとしていますが、C#コード自体がネイティブDLLから関数をインポートしていますが、そのネイティブ関数のシグネチャを持っていない 'dmp.dll'という名前を付けることにしました。これらの関数はC#でインポートされ、Delphiコードでそれらをインポートしようとしましたが、それらの多くをインポートして正常に動作しましたが、今はこの機能(StartLogging
)で苦労しています。何の問題についてPLOG_RECORD_CALLBACK
C#コードをDelphiに変換すると、SafeWaitHandleに相当するものは何ですか?
[DllImport("dmp.dll", CharSet = CharSet.Auto, EntryPoint = "StartLogging")]
public static extern int StartLogging(String AdapterName,
PLOG_RECORD_CALLBACK LogRecordCallback,
SafeWaitHandle StopLoggingEvent);
が、問題は、クラスがMicrosoft.Win32.SafeHandles
名前空間に存在している、このパラメータSafeWaitHandle
である:これは、彼らがC#でインポートする方法はありません。どうすればDelphiに移植できますか? Delphiの同等のデータ型は何ですか?
そして、ここで彼らはC#のコードでそれを使用する方法である:
AutoResetEvent StopEvent = new AutoResetEvent(false);
クラスAutoResetEvent
はその後、彼らはこのようなメソッドを呼び出すSystem.Threading
に存在する:
StartLogging(comboBox1.Text, CallbackProcedure, StopEvent.SafeWaitHandle);
そして、最後にと彼らが使用するログを停止する:
StopEvent.Set();
私は本当に混乱しており、私はこれを行う方法がわからない、あなたの助けを感謝します。 ありがとう
この場合、イベントハンドルのように聞こえます。 CreateEvent APIによって返されます。 Delphi RTLがTEventラッパーを提供しているかどうかを思い出すことはできません。 –