内存结构复制到type类型中,出了点奇怪的问题
我将内存中一段数据MemoryCopy到下面的一个type类型中时
BC BE BD DA 00 00 00 00 00 6C 01 6F 11 6E 01 67 11 6A 11 00 63 02 00 00 61 32 32 32 32 32
00 0E 0D 00 00 02 35 44 15 03 77 2F 01 BE 4F FF FF D4 C0 B7 C9 00 00 00 00 00 00 00 00 00
00 00 00 00 01 10 01 00 01 00 00 00 00
变成了:
BC BE BD DA 00 00 00 00 00 01 6F 11 6E 01 67 11 6A 11 00 63 02 00 00 61 32 32 32 32 32 00
0E 0D 00 00 02 35 44 15 03 77 2F 01 BE 4F FF FF D4 C0 B7 C9 00 00 00 00 00 00 00 00 00 00
00 00 00 01 10 01 00 01 00 00 00 00 00
用ReadPrcocessMemory也一样,奇怪
6C不见了,后面多了个00
Public Type DEMO_STRUCT
lpName As String *9
A1 As Integer
A2 As Integer
A3 As Integer
A4 As Integer
A5 As Integer
Reserved1(5) As Byte
B1 As Byte
B2 As Byte
B3 As Byte
B4 As Byte
B5 As Byte
Reserved2(4) As Byte
C1 As Byte
C2 As Byte
C3 As Byte
Reserved3(33) As Byte
End Type
Public ds As DEMO_STRUCT
结构有问题吗?改成lpName As String *8或*7都没用;
6C出来了但是调用3个都有问题,ds.A1=&H6F01 或ds.A1=&H6C00
也就是偏移了1Byte,我们要得到的是ds.A1=&H016C.
但是象下面一样改成Byte没问题:
Public Type DEMO_STRUCT
lpName As String *9
A1(1 To 2) As Byte
A2(1 To 2) As Byte
A3(1 To 2) As Byte
A4(1 To 2) As Byte
A5(1 To 2) As Byte
Reserved1(5) As Byte
B1 As Byte
B2 As Byte
B3 As Byte
B4 As Byte
B5 As Byte
Reserved2(4) As Byte
C1 As Byte
C2 As Byte
C3 As Byte
Reserved3(33) As Byte
End Type
这样只是分别得到了A1的高低2个字节,多不方便啊,为什么不能一下安全的得到他的Int值或Long值
而不发生偏移,这在VC里没问题,VB里不知怎么做?