我有一个本机方法,它需要一个指针来写出一个双字(uint)。
现在我需要从 (Int) 指针中获取实际的 uint 值,但是 Marshal 类只有方便的方法来读取(有符号)整数。
如何从指针中获取 uint 值?
我搜索了问题(和谷歌),但找不到我需要的东西。
示例(不工作)代码:
IntPtr pdwSetting = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(uint)));
try
{
// I'm trying to read the screen contrast here
NativeMethods.JidaVgaGetContrast(_handleJida, pdwSetting);
// this is not what I want, but close
var contrast = Marshal.ReadInt32(pdwSetting);
}
finally
{
Marshal.FreeHGlobal(pdwSetting);
}
本机函数的返回值是一个介于 0 和 255 之间的双字,其中 255 是完全对比度。