我尝试NdisGetCurrentSystemTime
通过 ioctl 将结果编组到 C# 程序。
LARGE_INTEGER data;
NdisGetCurrentSystemTime (&data );
marshal_data->time = (UINT64)(data.QuadPart / 10^6);
DBGPRINT(("Time: %64u", marshal_data->time));
在C#接收端,时间字段定义为uint64;编组结构中还有几个其他 uint64 字段。然而,当做
String.Format(("Time was {0}", recv_data->time))
我意外地得到与 DBGPRINT 中的数字不同的大数字。
C#:
[StructLayout(LayoutKind.Sequential)]
...
public UInt64 time
C:
struct _marshalme {
...
UINT64 time
...
}
字节顺序有什么奇怪的吗?