Win64 结构体定义的一个问题。~ ~
这个是 Win 7 x64 _MMPTE_HARDWARE 结构。
可是当自己定义的时候。typedef struct _MMPTE_HARDWARE {
unsigned Valid : 1;
unsigned Dirty1 : 1;
unsigned Owner : 1;
unsigned WriteThrough : 1;
unsigned CacheDisable : 1;
unsigned Accessed : 1;
unsigned Dirty : 1;
unsigned LargePage : 1;
unsigned Global : 1;
unsigned CopyOnWrite : 1;
unsigned Unused : 1;
unsigned Write : 1;
unsigned PageFrameNumber : 36;
unsigned reserved1 : 4;
unsigned SoftwareWsIndex : 11;
unsigned NoExecute : 1;
} MMPTE_HARDWARE, *PMMPTE_HARDWARE;编译器 提示: 'PageFrameNumber' : type of bit field too small for number of bits。
意思 大概就是太大了。
如果我把 PageFrameNumber 类型改成 ULONG64 之类的64位类型。 编译是通过了。但是并不符合要求。
如图。
What Should I Do.? MMPTE_HARDWARE不就是一个ULONG64嘛 Tesla.Angela 发表于 2012-5-11 20:13 static/image/common/back.gif
MMPTE_HARDWARE不就是一个ULONG64嘛
MMPTE_HARDWARE 的确是个ULONG64。
-。- 可是怎么改野。 {:soso_e119:}解决了。要这样才行。
#pragma pack(push,1)
typedef struct _NEWMMPTE_HARDWARE {
ULONG_PTR Valid : 1;
ULONG_PTR Dirty1 : 1;
ULONG_PTR Owner : 1;
ULONG_PTR WriteThrough : 1;
ULONG_PTR CacheDisable : 1;
ULONG_PTR Accessed : 1;
ULONG_PTR Dirty : 1;
ULONG_PTR LargePage : 1;
ULONG_PTR Global : 1;
ULONG_PTR CopyOnWrite : 1;
ULONG_PTR Unused : 1;
ULONG_PTR Write : 1;
ULONG_PTR PageFrameNumber : 36;
ULONG_PTR reserved1 : 4;
ULONG_PTR SoftwareWsIndex : 11;
ULONG_PTR NoExecute : 1;
} NEWMMPTE_HARDWARE, *NEWPMMPTE_HARDWARE;
#pragma pack(pop) {:soso_e136:} xmlpull 发表于 2012-5-11 21:20 static/image/common/back.gif
解决了。要这样才行。
#pragma pack(push,1)
原來如此
页:
[1]