C# 프로젝트를 Delphi로 변환하려고하는데 C# 코드 자체가 네이티브 dll에서 함수를 가져 오는 중입니다. 'dmp.dll'에 네이티브 함수의 서명이 없으므로 이름을 지정해야합니다. 이러한 함수는 C#에서 가져 와서 Delphi 코드에서 가져 오려고합니다. 많은 함수를 가져 오지만 제대로 작동하지만 이제는이 함수 (StartLogging
)로 고민하고 있습니다. 이것은 그들이 C#으로 수입하는 방법입니다C# 코드를 Delphi로 변환하면 SafeWaitHandle과 동일한 기능을 수행 할 수 있습니까?
[DllImport("dmp.dll", CharSet = CharSet.Auto, EntryPoint = "StartLogging")]
public static extern int StartLogging(String AdapterName,
PLOG_RECORD_CALLBACK LogRecordCallback,
SafeWaitHandle StopLoggingEvent);
클래스이 매개 변수 SafeWaitHandle
에 문제에 대한 PLOG_RECORD_CALLBACK
하지만, 문제는이 Microsoft.Win32.SafeHandles
네임 스페이스에 존재하지 않습니다. 델파이로 어떻게 이식 할 수 있습니까? Delphi에서 이에 상응하는 데이터 유형은 무엇입니까?
AutoResetEvent StopEvent = new AutoResetEvent(false);
클래스 AutoResetEvent
는 그런 다음 그들은이 같은 메서드를 호출 System.Threading
에 존재 : 마지막에 그런
StartLogging(comboBox1.Text, CallbackProcedure, StopEvent.SafeWaitHandle);
여기
그리고 그들이 C# 코드에서 사용하는 방법입니다 로깅을 중지하려면 다음을 사용하십시오.
StopEvent.Set();
정말 혼란스럽고 이것을하는 법을 모르겠습니다. 당신의 도움에 감사드립니다. 감사합니다.
이 경우 이벤트 핸들처럼 들립니다. CreateEvent API에 의해 반환됩니다. Delphi RTL에서 TEvent 래퍼를 제공하는지 다시는 알 수 없습니다. –