1
#define
_WIN32_WINNT 0x0400
2
#include
<
windows.h
>
3
#include
<
winioctl.h
>
4
//
ReadFileLink
5
ULONGLONG
*
GetFileClusters(
6
PCHAR lpFileName,
7
ULONG
*
ClusterSize,
8
ULONG
*
ClCount,
9
ULONG
*
FileSize
10
)
11![](https://i-blog.csdnimg.cn/blog_migrate/f4dd9275fd8de7849c582517f6083b4e.png)
{
12
HANDLE hFile;
13
ULONG OutSize;
14
ULONG Bytes, Cls, CnCount, r;
15
ULONGLONG *Clusters = NULL;
16
BOOLEAN Result = FALSE;
17
LARGE_INTEGER PrevVCN, Lcn;
18
STARTING_VCN_INPUT_BUFFER InBuf;
19
PRETRIEVAL_POINTERS_BUFFER OutBuf;
20
CHAR Name[7];
21
22
Name[0] = lpSrcName[0];
23
Name[1] = ':';
24
Name[2] = 0;
25![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
26
GetDiskFreeSpace(Name, &SecPerCl, &BtPerSec, NULL, NULL);
27![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
28
ClusterSize = SecPerCl * BtPerSec;
29![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
30
hFile = CreateFile(lpFileName, FILE_READ_ATTRIBUTES,
31
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
32
NULL, OPEN_EXISTING, 0, 0);
33![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
34
if (hFile != INVALID_HANDLE_VALUE)
35![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
36
*FileSize = GetFileSize(hFile, NULL);
37![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
38
OutSize = sizeof(RETRIEVAL_POINTERS_BUFFER) + (*FileSize / ClusterSize) * sizeof(OutBuf->Extents);
39![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
40
OutBuf = malloc(OutSize);
41![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
42
InBuf.StartingVcn.QuadPart = 0;
43
44
if (DeviceIoControl(hFile, FSCTL_GET_RETRIEVAL_POINTERS, &InBuf,
45
sizeof(InBuf), OutBuf, OutSize, &Bytes, NULL))
46![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
47
*ClCount = (*FileSize + ClusterSize - 1) / ClusterSize;
48![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
49
Clusters = malloc(*ClCount * sizeof(ULONGLONG));
50![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
51
PrevVCN = OutBuf->StartingVcn;
52![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
53
for (r = 0, Cls = 0; r < OutBuf->ExtentCount; r++)
54![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
55
Lcn = OutBuf->Extents[r].Lcn;
56![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
57
for (CnCount = (ULONG)(OutBuf->Extents[r].NextVcn.QuadPart - PrevVCN.QuadPart);
58
CnCount; CnCount--, Cls++, Lcn.QuadPart++) Clusters[Cls] = Lcn.QuadPart;
59![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
60
PrevVCN = OutBuf->Extents[r].NextVcn;
61
}
62
}
63
64
free(OutBuf);
65![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
66
CloseHandle(hFile);
67
}
68
return Clusters;
69
}
70![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
71
//
how do we use the clusters
72
void
Read(
73
PCHAR lpSrcName
74
)
75![](https://i-blog.csdnimg.cn/blog_migrate/f4dd9275fd8de7849c582517f6083b4e.png)
{
76
ULONG ClusterSize, BlockSize;
77
ULONGLONG *Clusters;
78
ULONG ClCount, FileSize, Bytes;
79
HANDLE hDrive, hFile;
80
ULONG SecPerCl, BtPerSec, r;
81
PVOID Buff;
82
LARGE_INTEGER Offset;
83
CHAR Name[7];
84
85
Clusters = GetFileClusters(lpSrcName, &ClusterSize, &ClCount, &FileSize);
86![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
87
if (Clusters)
88![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
89
Name[0] = '\\';
90
Name[1] = '\\';
91
Name[2] = '.';
92
Name[3] = '\\';
93
Name[4] = lpSrcName[0];
94
Name[5] = ':';
95
Name[6] = 0;
96![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
97
hDrive = CreateFile(Name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
98![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
99
if (hDrive != INVALID_HANDLE_VALUE)
100![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
101![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
102
Buff = malloc(ClusterSize);
103![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
104
for (r = 0; r < ClCount; r++, FileSize -= BlockSize)
105![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
{
106
Offset.QuadPart = ClusterSize * Clusters[r];
107![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
108
SetFilePointer(hDrive, Offset.LowPart, &Offset.HighPart, FILE_BEGIN);
109![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
110
ReadFile(hDrive, Buff, ClusterSize, &Bytes, NULL);
111![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
112
BlockSize = FileSize < ClusterSize ? FileSize : ClusterSize;
113![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
114
}
115![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
116
free(Buff);
117![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
118
CloseHandle(hDrive);
119
}
120
free(Clusters);
121
}
122
}
123
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
2
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
3
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
4
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
5
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
6
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
7
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
8
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
9
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
10
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
11
![](https://i-blog.csdnimg.cn/blog_migrate/f4dd9275fd8de7849c582517f6083b4e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b23b178ea381749b0daf4edadb77517.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
13
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
14
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
15
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
16
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
17
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
18
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
19
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
20
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
21
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
22
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
23
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
24
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
25
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
26
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
27
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
28
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
29
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
30
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
31
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
32
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
33
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
34
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
35
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
36
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
37
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
38
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
39
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
40
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
41
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
42
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
43
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
44
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
45
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
46
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
47
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
48
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
49
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
50
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
51
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
52
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
53
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
54
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
55
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
56
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
57
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
58
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
59
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
60
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
61
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
62
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
63
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
64
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
65
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
66
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
67
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
68
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
69
![](https://i-blog.csdnimg.cn/blog_migrate/69d892d40c337d0a0dcc06d9827e0acd.png)
70
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
71
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
72
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
73
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
74
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)
75
![](https://i-blog.csdnimg.cn/blog_migrate/f4dd9275fd8de7849c582517f6083b4e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2b23b178ea381749b0daf4edadb77517.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
76
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
77
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
78
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
79
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
80
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
81
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
82
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
83
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
84
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
85
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
86
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
87
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
88
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
89
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
90
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
91
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
92
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
93
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
94
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
95
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
96
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
97
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
98
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
99
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
100
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
101
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
102
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
103
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
104
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
105
![](https://i-blog.csdnimg.cn/blog_migrate/8ab56bb2aeb640dbad6c486e0258e6f0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/55ff3fca617ab000d8948e051f9b1e10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
106
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
107
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
108
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
109
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
110
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
111
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
112
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
113
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
114
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
115
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
116
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
117
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
118
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
119
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
120
![](https://i-blog.csdnimg.cn/blog_migrate/9b611eea95390d7b435b95c8b4a9c7ba.png)
121
![](https://i-blog.csdnimg.cn/blog_migrate/4f218b7e7f6532a3e8ff00181af168a9.png)
122
![](https://i-blog.csdnimg.cn/blog_migrate/69d892d40c337d0a0dcc06d9827e0acd.png)
123
![](https://i-blog.csdnimg.cn/blog_migrate/044918207c2a3c0cabf20ad7d11436a4.png)