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
子:
struct _marshalme {
...
UINT64 time
...
}
バイトオーダーでおかしなことはありますか?