SHP文件格式分析

研究MO中很重要的一部分就是SHP格式分析,对于底层开始时很重要的。

根据韩鹏老师的书,特将自己的读取内容后分析如下。

SHP结构说明

文件头  
记录头 记录内容

1)文件头的结构

文件头是长度固定的(100BYTE)共9个int型和7个double型。

起始位置 名称 数值 类型 位序
File Code 9994 int big
Unused 0 int big
Unused 0 int big
12 Unused 0 int big
16 Unused 0 int big
20 Unused 0 int big
24 文件长度 文件的实际长度 int big
28 版本号 1000 int Little
32 几何类型 几何类型 int Little
36 Xmin 最小值 double Little
44 Ymin 最小值 double Little
52 Xmax 最小值 double Little
60 Ymax 最小值 double Little
68× Zmin 最小值 double Little
76× Zmax 最小值 double Little
84× Mmin 最小的Measure值 double Little
92× Mmax 最大的Measure值 double Little

2)实体信息

实体信息包括:记录头和记录内容

记录头包括:记录号和坐标记录长度

  位序 记录类型 备注
记录号 big int 从1开始
坐标长度 big int  

记录内容:因不同的几何要素类型不同而不同,主要有:点、线、面。

现在我们介绍线状。

记录项 数值 数据类型 长度 个数 位序
几何类型 3(表示线状目标) int 4 1 Little
坐标范围   double 32 4 Little
子线段个数
NumParts
  int 4 1 Little
坐标个数
NumPoints
  int 4 1 Little
Parts数组   int 4*NumParts NumParts Little
Points数组 记录所有坐标信息 Points 根据点个数确定 NumPoints Little

通过读取内存里面的内容分析如下:

00000591    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000592    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000593    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000594    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000595    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x27
00000596    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd8   
00000597    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa   
00000598    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf5   
File Code 9994  正序读取
00000599    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000600    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000601    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000602    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000603    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000604    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000605    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000606    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Unused1    0
00000607    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000608    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000609    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000610    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000611    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000612    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000613    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000614    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
Unused2 0
00000615    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000616    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000617    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000618    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000619    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000620    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000621    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000622    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Unused3    0
00000623    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000624    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000625    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000626    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000627    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000628    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000629    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000630    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Unused4    0
00000631    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000632    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000633    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000634    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000635    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000636    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000637    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000638    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Unused5    0
00000639    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000640    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000641    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000642    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000643    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x2   
00000644    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfd   
00000645    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1a   
00000646    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe5   
文件的实际长度 538  正序读取
00000647    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe8   
00000648    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x17   
00000649    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3   
00000650    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfc   
00000651    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000652    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000653    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000654    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
版本号 1000 实际读取的时候为倒序读取(以下均为倒序读取)   
00000655    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3   
00000656    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfc   
00000657    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000658    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000659    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000660    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000661    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000662    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
几何类型 3 代表线  倒序读取
00000663    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xed   
00000664    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x12   
00000665    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x80   
00000666    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7f   
00000667    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xeb   
00000668    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x14   
00000669    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8a   
00000670    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x75

00000671    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x19   
00000672    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe6   
00000673    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8   
00000674    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47   
00000675    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000676    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000677    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000678    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
Xmin
00000679    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x95   
00000680    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x6a   
00000681    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x28   
00000682    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd7   
00000683    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7b   
00000684    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x84   
00000685    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4b   
00000686    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb4

00000687    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x39   
00000688    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xc6   
00000689    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8f   
00000690    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x70   
00000691    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000692    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000693    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000694    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
Ymin
00000695    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1e   
00000696    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe1   
00000697    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xc3   
00000698    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x3c   
00000699    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x63   
00000700    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x9c   
00000701    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3f   
00000702    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xc0
00000703    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x8b   
00000704    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x74   
00000705    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xbf   
00000706    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x40   
00000707    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000708    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000709    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000710    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
Xmax   
00000711    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xc2   
00000712    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x3d   
00000713    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x34   
00000714    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xcb   
00000715    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xc   
00000716    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf3   
00000717    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1f   
00000718    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe0
00000719    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x11   
00000720    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xee   
00000721    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa3   
00000722    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5c   
00000723    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000724    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000725    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000726    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
Ymax   
00000727    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000728    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000729    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000730    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000731    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000732    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000733    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000734    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000735    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000736    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000737    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000738    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000739    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000740    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000741    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000742    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
Zmin
00000743    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000744    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000745    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000746    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000747    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000748    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000749    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000750    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   

00000751    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000752    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000753    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000754    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000755    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000756    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000757    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000758    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
Zmax
00000759    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000760    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000761    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000762    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000763    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000764    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000765    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000766    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000767    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000768    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000769    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000770    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000771    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000772    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000773    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000774    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Mmin
00000775    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000776    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000777    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000778    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000779    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000780    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000781    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000782    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   

00000783    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000784    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000785    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000786    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000787    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000788    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000789    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000790    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
Mmax
00000791    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000792    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000793    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000794    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000795    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000796    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
00000797    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1   
00000798    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfe   
RecordNumber 1 正序读
00000799    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000800    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000801    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000802    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000803    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000804    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000805    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x28   
00000806    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xd7   
//ContentLength 40 正序读
00000807    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x3   
00000808    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfc   
00000809    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000810    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000811    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000812    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000813    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000814    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
//几何类型 3 倒序读
00000815    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x84   
00000816    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7b   
00000817    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf0   
00000818    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf   
00000819    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x68   
00000820    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x97   
00000821    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe3   
00000822    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x1c   
00000823    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x88   
00000824    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x77   
00000825    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8   
00000826    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47   
00000827    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000828    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000829    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000830    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//BOX 1
00000831    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x76   
00000832    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x89   
00000833    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa9   
00000834    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x56   
00000835    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x11   
00000836    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xee   
00000837    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xfa   
00000838    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5
00000839    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x99   
00000840    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x66   
00000841    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa0   
00000842    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5f   
00000843    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000844    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000845    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000846    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
//BOX 2
00000847    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7c   
00000848    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x83   
00000849    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x44   
00000850    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbb   
00000851    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4c   
00000852    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb3   
00000853    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x89   
00000854    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x76   
00000855    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x24   
00000856    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xdb   
00000857    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb9   
00000858    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x46   
00000859    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000860    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000861    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000862    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//BOX 3   
00000863    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x9c   
00000864    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x63   
00000865    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x6b   
00000866    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x94   
00000867    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x98   
00000868    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x67   
00000869    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa1   
00000870    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5e
00000871    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf1   
00000872    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe   
00000873    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa2   
00000874    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5d   
00000875    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000876    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000877    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000878    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//BOX 4   
00000879    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x1   
00000880    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfe   
00000881    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000882    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000883    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000884    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000885    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000886    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
//NumParts 1 倒序读   
00000887    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x2   
00000888    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xfd   
00000889    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000890    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000891    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000892    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000893    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000894    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
//NumPoints 2 倒序读
00000895    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000896    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000897    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000898    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000899    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000900    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff   
00000901    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x0   
00000902    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xff
//Parts数组 全0   
00000903    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x7c   
00000904    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x83   
00000905    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x44   
00000906    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbb   
00000907    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x4c   
00000908    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xb3   
00000909    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x89   
00000910    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x76   

00000911    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x24   
00000912    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xdb   
00000913    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb9   
00000914    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x46   
00000915    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000916    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000917    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000918    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//X
00000919    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x9c   
00000920    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x63   
00000921    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x6b   
00000922    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x94   
00000923    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x98   
00000924    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x67   
00000925    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa1   
00000926    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5e   

00000927    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf1   
00000928    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xe   
00000929    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa2   
00000930    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5d   
00000931    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000932    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000933    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000934    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
//Y
00000935    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x84   
00000936    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x7b   
00000937    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xf0   
00000938    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xf   
00000939    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x68   
00000940    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x97   
00000941    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xe3   
00000942    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x1c

00000943    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x88   
00000944    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x77   
00000945    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xb8   
00000946    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x47   
00000947    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x59   
00000948    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xa6   
00000949    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000950    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//X
00000951    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x76   
00000952    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x89   
00000953    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa9   
00000954    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x56   
00000955    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x11   
00000956    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xee   
00000957    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xfa   
00000958    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5   

00000959    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x99   
00000960    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x66   
00000961    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0xa0   
00000962    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0x5f   
00000963    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000964    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf   
00000965    15:59:44    ((PUCHAR) CompletionCtx->MyBuffer)[Offset] is 0x40   
00000966    15:59:44    (PUCHAR) CompletionCtx->OldBuffer)[Offset] is 0xbf
//Y

 

至此 所有的点数据读取完毕。

posted @ 2010-03-13 08:51  xinjun  阅读(4727)  评论(1编辑  收藏  举报