我正在将我的 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; }
}
ProcessSafeHandleandThreadSafeHandle类与ReadProcessMemoryor之类的方法一起工作得很好WriteProcessMemory,但我不能在上面的 Win32 结构中使用它们。
我是否缺少某种注释魔术?