我正在将我的 Win32 p/invoke 代码转换为使用SafeHandle
类而不是典型的IntPtr
句柄。
虽然在方法签名中一切都很好DllImport
,但我无法在编组 Win32 结构(即PROCESS_INFORMATION
)时让它们工作。
// This works without issue.
[StructLayout(LayoutKind.Sequential)]
internal struct Win32ProcessInformation
{
public IntPtr ProcessHandle { get; set; }
public IntPtr ThreadHandle { get; set; }
public int ProcessId { get; set; }
public int ThreadId { get; set; }
}
// This does not work!
[StructLayout(LayoutKind.Sequential)]
internal struct Win32ProcessInformation
{
public ProcessSafeHandle ProcessHandle { get; set; }
public ThreadSafeHandle ThreadHandle { get; set; }
public int ProcessId { get; set; }
public int ThreadId { get; set; }
}
ProcessSafeHandle
andThreadSafeHandle
类与ReadProcessMemory
or之类的方法一起工作得很好WriteProcessMemory
,但我不能在上面的 Win32 结构中使用它们。
我是否缺少某种注释魔术?