1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>WinPcap: Packet.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
<h1>Packet.h</h1><a href="Packet_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy)</span>
<a name="l00003"></a>00003 <span class="comment"> * Copyright (c) 2005 - 2010 CACE Technologies, Davis (California)</span>
<a name="l00004"></a>00004 <span class="comment"> * All rights reserved.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * Redistribution and use in source and binary forms, with or without</span>
<a name="l00007"></a>00007 <span class="comment"> * modification, are permitted provided that the following conditions</span>
<a name="l00008"></a>00008 <span class="comment"> * are met:</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * 1. Redistributions of source code must retain the above copyright</span>
<a name="l00011"></a>00011 <span class="comment"> * notice, this list of conditions and the following disclaimer.</span>
<a name="l00012"></a>00012 <span class="comment"> * 2. Redistributions in binary form must reproduce the above copyright</span>
<a name="l00013"></a>00013 <span class="comment"> * notice, this list of conditions and the following disclaimer in the</span>
<a name="l00014"></a>00014 <span class="comment"> * documentation and/or other materials provided with the distribution.</span>
<a name="l00015"></a>00015 <span class="comment"> * 3. Neither the name of the Politecnico di Torino, CACE Technologies </span>
<a name="l00016"></a>00016 <span class="comment"> * nor the names of its contributors may be used to endorse or promote </span>
<a name="l00017"></a>00017 <span class="comment"> * products derived from this software without specific prior written </span>
<a name="l00018"></a>00018 <span class="comment"> * permission.</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span>
<a name="l00021"></a>00021 <span class="comment"> * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span>
<a name="l00022"></a>00022 <span class="comment"> * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span>
<a name="l00023"></a>00023 <span class="comment"> * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span>
<a name="l00024"></a>00024 <span class="comment"> * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
<a name="l00025"></a>00025 <span class="comment"> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span>
<a name="l00026"></a>00026 <span class="comment"> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span>
<a name="l00027"></a>00027 <span class="comment"> * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span>
<a name="l00028"></a>00028 <span class="comment"> * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
<a name="l00029"></a>00029 <span class="comment"> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span>
<a name="l00030"></a>00030 <span class="comment"> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
<a name="l00031"></a>00031 <span class="comment"> *</span>
<a name="l00032"></a>00032 <span class="comment"> */</span>
<a name="l00033"></a>00033
<a name="l00042"></a>00042 <span class="preprocessor">#ifndef __PACKET_INCLUDE______</span>
<a name="l00043"></a>00043 <span class="preprocessor"></span><span class="preprocessor">#define __PACKET_INCLUDE______</span>
<a name="l00044"></a>00044 <span class="preprocessor"></span>
<a name="l00045"></a>00045 <span class="preprocessor">#if !defined(NDIS30) && !defined(NDIS50)</span>
<a name="l00046"></a>00046 <span class="preprocessor"></span><span class="preprocessor">#error NDIS30 or NDIS50 should be defined</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>
<a name="l00049"></a>00049 <span class="preprocessor">#ifdef _X86_</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#define NTKERNEL </span>
<a name="l00051"></a>00051 <span class="preprocessor">#include "jitter.h"</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00053"></a>00053 <span class="preprocessor"></span>
<a name="l00054"></a>00054 <span class="preprocessor">#ifdef HAVE_BUGGY_TME_SUPPORT</span>
<a name="l00055"></a>00055 <span class="preprocessor"></span><span class="preprocessor">#ifndef _X86_</span>
<a name="l00056"></a>00056 <span class="preprocessor"></span><span class="preprocessor">#error TME support is available only on x86 architectures</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#endif // _X86_</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span><span class="preprocessor">#endif //HAVE_BUGGY_TME_SUPPORT</span>
<a name="l00059"></a>00059 <span class="preprocessor"></span>
<a name="l00060"></a>00060
<a name="l00061"></a>00061 <span class="comment">//</span>
<a name="l00062"></a>00062 <span class="comment">// Needed to disable a warning due to the #pragma prefast directives,</span>
<a name="l00063"></a>00063 <span class="comment">// that are ignored by the normal DDK compiler</span>
<a name="l00064"></a>00064 <span class="comment">//</span>
<a name="l00065"></a>00065 <span class="preprocessor">#ifndef _PREFAST_</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span><span class="preprocessor">#pragma warning(disable:4068)</span>
<a name="l00067"></a>00067 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00068"></a>00068 <span class="preprocessor"></span>
<a name="l00069"></a>00069 <span class="preprocessor">#include "win_bpf.h"</span>
<a name="l00070"></a>00070
<a name="l00071"></a><a class="code" href="group__NPF__include.html#ga8fc96cee4177a369a99de7026ebeba81">00071</a> <span class="preprocessor">#define MAX_REQUESTS 32 </span>
<a name="l00072"></a>00072 <span class="preprocessor"></span>
<a name="l00073"></a><a class="code" href="group__NPF__include.html#ga8463d2101446f74b83ed10006d772384">00073</a> <span class="preprocessor"></span><span class="preprocessor">#define Packet_ALIGNMENT sizeof(int) </span>
<a name="l00074"></a><a class="code" href="group__NPF__include.html#ga6ad53095b69ed77878dc683754e3264a">00074</a> <span class="preprocessor">#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) </span>
<a name="l00075"></a>00075 <span class="preprocessor"></span>
<a name="l00076"></a>00076 <span class="preprocessor"></span>
<a name="l00077"></a><a class="code" href="group__NPF__include.html#ga9cd2ca337001428aa9e1cb512a28ecc2">00077</a> <span class="preprocessor"></span><span class="preprocessor">#define KERNEL_EVENT_NAMESPACE L"\\BaseNamedObjects\\"</span>
<a name="l00078"></a>00078 <span class="preprocessor"></span>
<a name="l00079"></a>00079
<a name="l00080"></a>00080 <span class="comment">// Working modes</span>
<a name="l00081"></a><a class="code" href="group__NPF__include.html#gac93c0a6ad1d2a3143b1115bdab3ac04d">00081</a> <span class="preprocessor">#define MODE_CAPT 0x0 </span>
<a name="l00082"></a><a class="code" href="group__NPF__include.html#ga503326906a62e96c147ae6af31fb5659">00082</a> <span class="preprocessor">#define MODE_STAT 0x1 </span>
<a name="l00083"></a><a class="code" href="group__NPF__include.html#ga528e7e542cb1a028a10a3a318880dffb">00083</a> <span class="preprocessor">#define MODE_MON 0x2 </span>
<a name="l00084"></a><a class="code" href="group__NPF__include.html#ga89853f93dc8cc890b0665629d16d2831">00084</a> <span class="preprocessor">#define MODE_DUMP 0x10 </span>
<a name="l00085"></a>00085 <span class="preprocessor"></span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00087"></a><a class="code" href="group__NPF__include.html#ga4f6749b7708a411df2a3341a3fcef917">00087</a> <span class="preprocessor">#define IMMEDIATE 1 </span>
<a name="l00088"></a>00088 <span class="preprocessor"></span>
<a name="l00089"></a><a class="code" href="group__NPF__include.html#ga0a110077bb4fcbcc75512d8988c90de8">00089</a> <span class="preprocessor"></span><span class="preprocessor">#define NDIS_FLAGS_SKIP_LOOPBACK_W2K 0x400 </span>
<a name="l00090"></a>00090 <span class="preprocessor"></span>
<a name="l00091"></a>00091 <span class="preprocessor"></span><span class="comment">// The following definitions are used to provide compatibility </span>
<a name="l00092"></a>00092 <span class="comment">// of the dump files with the ones of libpcap</span>
<a name="l00093"></a><a class="code" href="group__NPF__include.html#gafedcc0aa0cf5abe7b20c68eefdfcb126">00093</a> <span class="preprocessor">#define TCPDUMP_MAGIC 0xa1b2c3d4 </span>
<a name="l00094"></a><a class="code" href="group__NPF__include.html#gaac031371d41e21ff96e80409e05a7ddb">00094</a> <span class="preprocessor">#define PCAP_VERSION_MAJOR 2 </span>
<a name="l00095"></a><a class="code" href="group__NPF__include.html#ga9c200b070c9f626d38184588b16849c2">00095</a> <span class="preprocessor">#define PCAP_VERSION_MINOR 4 </span>
<a name="l00096"></a>00096 <span class="preprocessor"></span>
<a name="l00097"></a>00097 <span class="preprocessor"></span><span class="comment">// Loopback behaviour definitions</span>
<a name="l00098"></a><a class="code" href="group__NPF__include.html#ga7ccc8974741059b5ae25231a56dbed09">00098</a> <span class="preprocessor">#define NPF_DISABLE_LOOPBACK 1 </span>
<a name="l00099"></a><a class="code" href="group__NPF__include.html#ga4a60d1f215d5b2af2b3b86a0f2a90ae2">00099</a> <span class="preprocessor">#define NPF_ENABLE_LOOPBACK 2 </span>
<a name="l00100"></a>00100 <span class="preprocessor"></span>
<a name="l00101"></a>00101 <span class="preprocessor"></span>
<a name="l00106"></a><a class="code" href="structpacket__file__header.html">00106</a> <span class="keyword">struct </span><a class="code" href="structpacket__file__header.html" title="Header of a libpcap dump file.">packet_file_header</a>
<a name="l00107"></a>00107 {
<a name="l00108"></a><a class="code" href="structpacket__file__header.html#ab396ddef34e11edb49e5edfcc39c2dc7">00108</a> UINT <a class="code" href="structpacket__file__header.html#ab396ddef34e11edb49e5edfcc39c2dc7" title="Libpcap magic number.">magic</a>;
<a name="l00109"></a><a class="code" href="structpacket__file__header.html#a312dffcaa516df104318626fbdc01a77">00109</a> USHORT <a class="code" href="structpacket__file__header.html#a312dffcaa516df104318626fbdc01a77" title="Libpcap major version.">version_major</a>;
<a name="l00110"></a><a class="code" href="structpacket__file__header.html#a143bc467378ffbd0460662bd8912082b">00110</a> USHORT <a class="code" href="structpacket__file__header.html#a143bc467378ffbd0460662bd8912082b" title="Libpcap minor version.">version_minor</a>;
<a name="l00111"></a><a class="code" href="structpacket__file__header.html#ab0f3e0ccc83861eb84cd3da32f01f090">00111</a> UINT <a class="code" href="structpacket__file__header.html#ab0f3e0ccc83861eb84cd3da32f01f090" title="Gmt to local correction.">thiszone</a>;
<a name="l00112"></a><a class="code" href="structpacket__file__header.html#a5938c470e9e548ad2ac04923725e7721">00112</a> UINT <a class="code" href="structpacket__file__header.html#a5938c470e9e548ad2ac04923725e7721" title="Accuracy of timestamps.">sigfigs</a>;
<a name="l00113"></a><a class="code" href="structpacket__file__header.html#a45b189420d67014dba25bd13da85ddae">00113</a> UINT <a class="code" href="structpacket__file__header.html#a45b189420d67014dba25bd13da85ddae" title="Length of the max saved portion of each packet.">snaplen</a>;
<a name="l00114"></a><a class="code" href="structpacket__file__header.html#ab2a8854181cde7a065a43380b56fd2a1">00114</a> UINT <a class="code" href="structpacket__file__header.html#ab2a8854181cde7a065a43380b56fd2a1" title="Data link type (DLT_*). See win_bpf.h for details.">linktype</a>;
<a name="l00115"></a>00115 };
<a name="l00116"></a>00116
<a name="l00121"></a><a class="code" href="structsf__pkthdr.html">00121</a> <span class="keyword">struct </span><a class="code" href="structsf__pkthdr.html" title="Header associated to a packet in the driver&#39;s buffer when the driver is in dump...">sf_pkthdr</a> {
<a name="l00122"></a><a class="code" href="structsf__pkthdr.html#a21be78b2818c91cb205885b8a6f5aed8">00122</a> <span class="keyword">struct </span>timeval <a class="code" href="structsf__pkthdr.html#a21be78b2818c91cb205885b8a6f5aed8" title="time stamp">ts</a>;
<a name="l00123"></a><a class="code" href="structsf__pkthdr.html#addde4bcd837b0ac2f4ab6472162c8ec2">00123</a> UINT <a class="code" href="structsf__pkthdr.html#addde4bcd837b0ac2f4ab6472162c8ec2">caplen</a>;
<a name="l00124"></a>00124
<a name="l00125"></a>00125
<a name="l00126"></a><a class="code" href="structsf__pkthdr.html#aacda8195c98d3cc32ebece7b17dac774">00126</a> UINT <a class="code" href="structsf__pkthdr.html#aacda8195c98d3cc32ebece7b17dac774" title="Length of the original packet (off wire).">len</a>;
<a name="l00127"></a>00127 };
<a name="l00128"></a>00128
<a name="l00129"></a>00129 <span class="comment">//</span>
<a name="l00130"></a>00130 <span class="comment">// NT4 DDK doesn't have C_ASSERT</span>
<a name="l00131"></a>00131 <span class="comment">//</span>
<a name="l00132"></a>00132 <span class="preprocessor">#ifndef C_ASSERT</span>
<a name="l00133"></a><a class="code" href="group__NPF__include.html#ga7300b6880da1b61717e7ff815d579bf6">00133</a> <span class="preprocessor"></span><span class="preprocessor">#define C_ASSERT(a)</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00135"></a>00135 <span class="preprocessor"></span>
<a name="l00143"></a><a class="code" href="struct__PACKET__OID__DATA.html">00143</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__PACKET__OID__DATA.html" title="Structure containing an OID request.">_PACKET_OID_DATA</a> {
<a name="l00144"></a><a class="code" href="struct__PACKET__OID__DATA.html#a7f776f07ead21514e4c48555980644c8">00144</a> ULONG <a class="code" href="struct__PACKET__OID__DATA.html#a7f776f07ead21514e4c48555980644c8">Oid</a>;
<a name="l00145"></a>00145
<a name="l00146"></a><a class="code" href="struct__PACKET__OID__DATA.html#abfb371817eb1c8f0d8a165bb2b798092">00146</a> ULONG <a class="code" href="struct__PACKET__OID__DATA.html#abfb371817eb1c8f0d8a165bb2b798092" title="Length of the data field.">Length</a>;
<a name="l00147"></a><a class="code" href="struct__PACKET__OID__DATA.html#a4cbcc2ef0ca2424d2488748b944f4507">00147</a> UCHAR <a class="code" href="struct__PACKET__OID__DATA.html#a4cbcc2ef0ca2424d2488748b944f4507">Data</a>[1];
<a name="l00148"></a>00148
<a name="l00149"></a>00149 }
<a name="l00150"></a>00150 <a class="code" href="struct__PACKET__OID__DATA.html" title="Structure containing an OID request.">PACKET_OID_DATA</a>, *<a class="code" href="struct__PACKET__OID__DATA.html" title="Structure containing an OID request.">PPACKET_OID_DATA</a>;
<a name="l00151"></a>00151
<a name="l00152"></a>00152 <a class="code" href="group__NPF__include.html#ga7300b6880da1b61717e7ff815d579bf6">C_ASSERT</a>(<span class="keyword">sizeof</span>(<a class="code" href="struct__PACKET__OID__DATA.html" title="Structure containing an OID request.">PACKET_OID_DATA</a>) == 12);
<a name="l00153"></a>00153
<a name="l00163"></a><a class="code" href="struct__INTERNAL__REQUEST.html">00163</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__INTERNAL__REQUEST.html" title="Stores an OID request.">_INTERNAL_REQUEST</a> {
<a name="l00164"></a><a class="code" href="struct__INTERNAL__REQUEST.html#a52c50c47cc14f9989d741158ef6da1b9">00164</a> LIST_ENTRY <a class="code" href="struct__INTERNAL__REQUEST.html#a52c50c47cc14f9989d741158ef6da1b9" title="Used to handle lists of requests.">ListElement</a>;
<a name="l00165"></a>00165 <span class="comment">// PIRP Irp; ///< Irp that performed the request</span>
<a name="l00166"></a>00166 <span class="comment">// BOOLEAN Internal; ///< True if the request is for internal use of npf.sys. False if the request is performed by the user through an IOCTL.</span>
<a name="l00167"></a><a class="code" href="struct__INTERNAL__REQUEST.html#aa27c26f410846e10408bc8ac558430b9">00167</a> NDIS_EVENT <a class="code" href="struct__INTERNAL__REQUEST.html#aa27c26f410846e10408bc8ac558430b9">InternalRequestCompletedEvent</a>;
<a name="l00168"></a><a class="code" href="struct__INTERNAL__REQUEST.html#a9d22abed5e537b5a86700c0cae0aeeda">00168</a> NDIS_REQUEST <a class="code" href="struct__INTERNAL__REQUEST.html#a9d22abed5e537b5a86700c0cae0aeeda" title="The structure with the actual request, that will be passed to NdisRequest().">Request</a>;
<a name="l00169"></a><a class="code" href="struct__INTERNAL__REQUEST.html#a1948690a3012c81acf392ba489b32b60">00169</a> NDIS_STATUS <a class="code" href="struct__INTERNAL__REQUEST.html#a1948690a3012c81acf392ba489b32b60">RequestStatus</a>;
<a name="l00170"></a>00170
<a name="l00171"></a>00171 } <a class="code" href="struct__INTERNAL__REQUEST.html" title="Stores an OID request.">INTERNAL_REQUEST</a>, *<a class="code" href="struct__INTERNAL__REQUEST.html" title="Stores an OID request.">PINTERNAL_REQUEST</a>;
<a name="l00172"></a>00172
<a name="l00180"></a><a class="code" href="struct__PACKET__RESERVED.html">00180</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__PACKET__RESERVED.html" title="Contains a NDIS packet.">_PACKET_RESERVED</a> {
<a name="l00181"></a><a class="code" href="struct__PACKET__RESERVED.html#a52c50c47cc14f9989d741158ef6da1b9">00181</a> LIST_ENTRY <a class="code" href="struct__PACKET__RESERVED.html#a52c50c47cc14f9989d741158ef6da1b9" title="Used to handle lists of packets.">ListElement</a>;
<a name="l00182"></a><a class="code" href="struct__PACKET__RESERVED.html#a4bee02d146b824008b9d03379b085b1e">00182</a> PIRP <a class="code" href="struct__PACKET__RESERVED.html#a4bee02d146b824008b9d03379b085b1e" title="Irp that performed the request.">Irp</a>;
<a name="l00183"></a><a class="code" href="struct__PACKET__RESERVED.html#a3bbb67b64845622d97356325852ef6be">00183</a> PMDL <a class="code" href="struct__PACKET__RESERVED.html#a3bbb67b64845622d97356325852ef6be" title="MDL mapping the buffer of the packet.">pMdl</a>;
<a name="l00184"></a><a class="code" href="struct__PACKET__RESERVED.html#abc42eac7c5d3593aa809edceadb0743f">00184</a> BOOLEAN <a class="code" href="struct__PACKET__RESERVED.html#abc42eac7c5d3593aa809edceadb0743f">FreeBufAfterWrite</a>;
<a name="l00185"></a>00185
<a name="l00186"></a><a class="code" href="struct__PACKET__RESERVED.html#a761baf004d76cf5faf3c898787fceeb6">00186</a> ULONG <a class="code" href="struct__PACKET__RESERVED.html#a761baf004d76cf5faf3c898787fceeb6" title="The CPU on which the packet was pulled out of the linked list of free packets.">Cpu</a>;
<a name="l00187"></a>00187 } <a class="code" href="struct__PACKET__RESERVED.html" title="Contains a NDIS packet.">PACKET_RESERVED</a>, *<a class="code" href="struct__PACKET__RESERVED.html" title="Contains a NDIS packet.">PPACKET_RESERVED</a>;
<a name="l00188"></a>00188
<a name="l00189"></a><a class="code" href="group__NPF__include.html#ga048ba8dfabc6ac16c602a1ca6fe994fc">00189</a> <span class="preprocessor">#define RESERVED(_p) ((PPACKET_RESERVED)((_p)->ProtocolReserved)) </span>
<a name="l00190"></a>00190 <span class="preprocessor"></span>
<a name="l00191"></a>00191 <span class="preprocessor"></span>
<a name="l00196"></a><a class="code" href="struct__DEVICE__EXTENSION.html">00196</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__DEVICE__EXTENSION.html" title="Port device extension.">_DEVICE_EXTENSION</a> {
<a name="l00197"></a><a class="code" href="struct__DEVICE__EXTENSION.html#a8201dab43dd06ad55b93317cbbd54211">00197</a> NDIS_STRING <a class="code" href="struct__DEVICE__EXTENSION.html#a8201dab43dd06ad55b93317cbbd54211" title="Name of the adapter.">AdapterName</a>;
<a name="l00198"></a><a class="code" href="struct__DEVICE__EXTENSION.html#a147b6ff0677e88b5721e51ab7759121a">00198</a> PWSTR <a class="code" href="struct__DEVICE__EXTENSION.html#a147b6ff0677e88b5721e51ab7759121a">ExportString</a>;
<a name="l00199"></a>00199
<a name="l00200"></a>00200 } <a class="code" href="struct__DEVICE__EXTENSION.html" title="Port device extension.">DEVICE_EXTENSION</a>, *<a class="code" href="struct__DEVICE__EXTENSION.html" title="Port device extension.">PDEVICE_EXTENSION</a>;
<a name="l00201"></a>00201
<a name="l00207"></a><a class="code" href="struct____CPU__Private__Data.html">00207</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct____CPU__Private__Data.html" title="Kernel buffer of each CPU.">__CPU_Private_Data</a>
<a name="l00208"></a>00208 {
<a name="l00209"></a><a class="code" href="struct____CPU__Private__Data.html#a897d2179904e0d6fafd73b3d400052de">00209</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#a897d2179904e0d6fafd73b3d400052de" title="Zero-based index of the producer in the buffer. It indicates the first free byte...">P</a>;
<a name="l00210"></a><a class="code" href="struct____CPU__Private__Data.html#a2df61425b58c12f1de6f0e6aaeb131ea">00210</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#a2df61425b58c12f1de6f0e6aaeb131ea" title="Zero-based index of the consumer in the buffer. It indicates the first free byte...">C</a>;
<a name="l00211"></a><a class="code" href="struct____CPU__Private__Data.html#acaf5ef1e959170b06d01fc65a27bb951">00211</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#acaf5ef1e959170b06d01fc65a27bb951" title="Number of the free bytes in the buffer.">Free</a>;
<a name="l00212"></a><a class="code" href="struct____CPU__Private__Data.html#a7ed9f5e612c567cfa25af0f46a25dad4">00212</a> PUCHAR <a class="code" href="struct____CPU__Private__Data.html#a7ed9f5e612c567cfa25af0f46a25dad4" title="Pointer to the kernel buffer used to capture packets.">Buffer</a>;
<a name="l00213"></a><a class="code" href="struct____CPU__Private__Data.html#ac723ebbda9ff2ef8e4d773c7305db1f6">00213</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#ac723ebbda9ff2ef8e4d773c7305db1f6">Accepted</a>;
<a name="l00214"></a>00214
<a name="l00215"></a>00215
<a name="l00216"></a>00216
<a name="l00217"></a><a class="code" href="struct____CPU__Private__Data.html#a82febc79f3f3bbf857a4fd34447b5ca2">00217</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#a82febc79f3f3bbf857a4fd34447b5ca2">Received</a>;
<a name="l00218"></a>00218
<a name="l00219"></a>00219
<a name="l00220"></a>00220
<a name="l00221"></a><a class="code" href="struct____CPU__Private__Data.html#a04eecb86252e644a73f38346274340dc">00221</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#a04eecb86252e644a73f38346274340dc">Dropped</a>;
<a name="l00222"></a>00222
<a name="l00223"></a>00223
<a name="l00224"></a>00224
<a name="l00225"></a><a class="code" href="struct____CPU__Private__Data.html#a59c9030d87b24c9cb4efdabe9c7b9337">00225</a> NDIS_SPIN_LOCK <a class="code" href="struct____CPU__Private__Data.html#a59c9030d87b24c9cb4efdabe9c7b9337" title="It protects the buffer associated with this CPU.">BufferLock</a>;
<a name="l00226"></a><a class="code" href="struct____CPU__Private__Data.html#acae03ade5065032ceaeef0bd03217b4f">00226</a> PMDL <a class="code" href="struct____CPU__Private__Data.html#acae03ade5065032ceaeef0bd03217b4f" title="MDL used to map the portion of the buffer that will contain an incoming packet.">TransferMdl1</a>;
<a name="l00227"></a><a class="code" href="struct____CPU__Private__Data.html#a17b59e156d00ef5c76bdfe454c73ca49">00227</a> PMDL <a class="code" href="struct____CPU__Private__Data.html#a17b59e156d00ef5c76bdfe454c73ca49" title="Second MDL used to map the portion of the buffer that will contain an incoming packet...">TransferMdl2</a>;
<a name="l00228"></a><a class="code" href="struct____CPU__Private__Data.html#a58f2c915dfc7041ccb0d568eb79b494e">00228</a> ULONG <a class="code" href="struct____CPU__Private__Data.html#a58f2c915dfc7041ccb0d568eb79b494e" title="Used by NdisTransferData() (when we call NdisTransferData, p index must be updated...">NewP</a>;
<a name="l00229"></a>00229 }
<a name="l00230"></a>00230 <a class="code" href="struct____CPU__Private__Data.html" title="Kernel buffer of each CPU.">CpuPrivateData</a>;
<a name="l00231"></a>00231
<a name="l00232"></a>00232
<a name="l00240"></a><a class="code" href="struct__OPEN__INSTANCE.html">00240</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__OPEN__INSTANCE.html" title="Contains the state of a running instance of the NPF driver.">_OPEN_INSTANCE</a>
<a name="l00241"></a>00241 {
<a name="l00242"></a><a class="code" href="struct__OPEN__INSTANCE.html#aaa72c26b5a1b98197da412302325e009">00242</a> PDEVICE_EXTENSION <a class="code" href="struct__OPEN__INSTANCE.html#aaa72c26b5a1b98197da412302325e009">DeviceExtension</a>;
<a name="l00243"></a>00243
<a name="l00244"></a><a class="code" href="struct__OPEN__INSTANCE.html#aa017f65671fb96e4a0d3e875536579df">00244</a> NDIS_HANDLE <a class="code" href="struct__OPEN__INSTANCE.html#aa017f65671fb96e4a0d3e875536579df" title="NDIS idetifier of the adapter used by this instance.">AdapterHandle</a>;
<a name="l00245"></a><a class="code" href="struct__OPEN__INSTANCE.html#af6a81c046e634d6149550d3475924c05">00245</a> UINT <a class="code" href="struct__OPEN__INSTANCE.html#af6a81c046e634d6149550d3475924c05">Medium</a>;
<a name="l00246"></a>00246
<a name="l00247"></a><a class="code" href="struct__OPEN__INSTANCE.html#abb035c7e10216edcf41fa1576fecca42">00247</a> NDIS_HANDLE <a class="code" href="struct__OPEN__INSTANCE.html#abb035c7e10216edcf41fa1576fecca42" title="Pool of NDIS_PACKET structures used to transfer the packets from and to the NIC driver...">PacketPool</a>;
<a name="l00248"></a><a class="code" href="struct__OPEN__INSTANCE.html#abe53f2762ef5451c80b2fcadeff59884">00248</a> KSPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#abe53f2762ef5451c80b2fcadeff59884" title="SpinLock used to synchronize the OID requests.">RequestSpinLock</a>;
<a name="l00249"></a><a class="code" href="struct__OPEN__INSTANCE.html#a805c530d7fa5f6078b9170dc0cd03f5c">00249</a> LIST_ENTRY <a class="code" href="struct__OPEN__INSTANCE.html#a805c530d7fa5f6078b9170dc0cd03f5c" title="List of pending OID requests.">RequestList</a>;
<a name="l00250"></a><a class="code" href="struct__OPEN__INSTANCE.html#a1836c9a11084bf113d902946c5c41499">00250</a> LIST_ENTRY <a class="code" href="struct__OPEN__INSTANCE.html#a1836c9a11084bf113d902946c5c41499" title="List of pending adapter reset requests.">ResetIrpList</a>;
<a name="l00251"></a><a class="code" href="struct__OPEN__INSTANCE.html#a9a6854a154d332159dbcb19e5d104441">00251</a> <a class="code" href="struct__INTERNAL__REQUEST.html" title="Stores an OID request.">INTERNAL_REQUEST</a> <a class="code" href="struct__OPEN__INSTANCE.html#a9a6854a154d332159dbcb19e5d104441" title="Array of structures that wrap every single OID request.">Requests</a>[<a class="code" href="group__NPF__include.html#ga8fc96cee4177a369a99de7026ebeba81" title="Maximum number of simultaneous IOCTL requests.">MAX_REQUESTS</a>];
<a name="l00252"></a><a class="code" href="struct__OPEN__INSTANCE.html#a006227bc7ca0b2df920a8adfb7740ecb">00252</a> PMDL <a class="code" href="struct__OPEN__INSTANCE.html#a006227bc7ca0b2df920a8adfb7740ecb" title="Pointer to a Memory descriptor list (MDL) that maps the circular buffer&#39;s memory...">BufferMdl</a>;
<a name="l00253"></a><a class="code" href="struct__OPEN__INSTANCE.html#a6139735ab3e4fa797d344e314bba6473">00253</a> PKEVENT <a class="code" href="struct__OPEN__INSTANCE.html#a6139735ab3e4fa797d344e314bba6473" title="Pointer to the event on which the read calls on this instance must wait.">ReadEvent</a>;
<a name="l00254"></a><a class="code" href="struct__OPEN__INSTANCE.html#a312a1a6ffddf98f960cd0ac2d56fce52">00254</a> PUCHAR <a class="code" href="struct__OPEN__INSTANCE.html#a312a1a6ffddf98f960cd0ac2d56fce52">bpfprogram</a>;
<a name="l00255"></a>00255
<a name="l00256"></a>00256
<a name="l00257"></a>00257
<a name="l00258"></a>00258
<a name="l00259"></a>00259 <span class="preprocessor">#ifdef _X86_</span>
<a name="l00260"></a>00260 <span class="preprocessor"></span> <a class="code" href="structJIT__BPF__Filter.html" title="Structure describing a x86 filtering program created by the jitter.">JIT_BPF_Filter</a> *Filter;
<a name="l00261"></a>00261
<a name="l00262"></a>00262 <span class="preprocessor">#endif //_X86_</span>
<a name="l00263"></a><a class="code" href="struct__OPEN__INSTANCE.html#a263f7d6f5db5625541d275380685f0b1">00263</a> <span class="preprocessor"></span> UINT <a class="code" href="struct__OPEN__INSTANCE.html#a263f7d6f5db5625541d275380685f0b1">MinToCopy</a>;
<a name="l00264"></a>00264
<a name="l00265"></a><a class="code" href="struct__OPEN__INSTANCE.html#aa6709070de8443c026e3b86913942c2b">00265</a> LARGE_INTEGER <a class="code" href="struct__OPEN__INSTANCE.html#aa6709070de8443c026e3b86913942c2b">TimeOut</a>;
<a name="l00266"></a>00266
<a name="l00267"></a>00267
<a name="l00268"></a><a class="code" href="struct__OPEN__INSTANCE.html#a1ea5d0cb93f22f7d0fdf804bd68c3326">00268</a> <span class="keywordtype">int</span> <a class="code" href="struct__OPEN__INSTANCE.html#a1ea5d0cb93f22f7d0fdf804bd68c3326" title="Working mode of the driver. See PacketSetMode() for details.">mode</a>;
<a name="l00269"></a><a class="code" href="struct__OPEN__INSTANCE.html#a87b5968c02200b033f7c6e15da439e62">00269</a> LARGE_INTEGER <a class="code" href="struct__OPEN__INSTANCE.html#a87b5968c02200b033f7c6e15da439e62" title="Amount of bytes accepted by the filter when this instance is in statistical mode...">Nbytes</a>;
<a name="l00270"></a><a class="code" href="struct__OPEN__INSTANCE.html#a51a42386327e2a337854dd20cbe83061">00270</a> LARGE_INTEGER <a class="code" href="struct__OPEN__INSTANCE.html#a51a42386327e2a337854dd20cbe83061" title="Number of packets accepted by the filter when this instance is in statistical mode...">Npackets</a>;
<a name="l00271"></a><a class="code" href="struct__OPEN__INSTANCE.html#a7bd68a3950090232f1147e501a4ccf78">00271</a> NDIS_SPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#a7bd68a3950090232f1147e501a4ccf78" title="SpinLock that protects the statistical mode counters.">CountersLock</a>;
<a name="l00272"></a><a class="code" href="struct__OPEN__INSTANCE.html#af6b5b0a348f7a40d795b554b0eceed73">00272</a> UINT <a class="code" href="struct__OPEN__INSTANCE.html#af6b5b0a348f7a40d795b554b0eceed73">Nwrites</a>;
<a name="l00273"></a>00273
<a name="l00274"></a><a class="code" href="struct__OPEN__INSTANCE.html#aaa76c3b87b73baaa785c459188d769e0">00274</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#aaa76c3b87b73baaa785c459188d769e0" title="Counts the number of times a single write has already physically repeated.">Multiple_Write_Counter</a>;
<a name="l00275"></a><a class="code" href="struct__OPEN__INSTANCE.html#a46f6423b318291c7cc6ae32c226b33fd">00275</a> NDIS_EVENT <a class="code" href="struct__OPEN__INSTANCE.html#a46f6423b318291c7cc6ae32c226b33fd" title="Event used to synchronize the multiple write process.">WriteEvent</a>;
<a name="l00276"></a><a class="code" href="struct__OPEN__INSTANCE.html#af854d4eefa0f15302eaccee06e1ef447">00276</a> BOOLEAN <a class="code" href="struct__OPEN__INSTANCE.html#af854d4eefa0f15302eaccee06e1ef447">WriteInProgress</a>;
<a name="l00277"></a>00277
<a name="l00278"></a><a class="code" href="struct__OPEN__INSTANCE.html#a44ab7ba650b09972a0677958ad0ea4e0">00278</a> NDIS_SPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#a44ab7ba650b09972a0677958ad0ea4e0" title="SpinLock that protects the WriteInProgress variable.">WriteLock</a>;
<a name="l00279"></a><a class="code" href="struct__OPEN__INSTANCE.html#af63559424b5849687cc5c5fbad184c0f">00279</a> NDIS_EVENT <a class="code" href="struct__OPEN__INSTANCE.html#af63559424b5849687cc5c5fbad184c0f" title="Event used to synchronize I/O requests with the callback structure of NDIS.">NdisRequestEvent</a>;
<a name="l00280"></a><a class="code" href="struct__OPEN__INSTANCE.html#a445a6029d067430cd761ae692443b573">00280</a> BOOLEAN <a class="code" href="struct__OPEN__INSTANCE.html#a445a6029d067430cd761ae692443b573" title="True if this instance should not capture back the packets that it transmits.">SkipSentPackets</a>;
<a name="l00281"></a><a class="code" href="struct__OPEN__INSTANCE.html#af4f46bc8ed07a40605aeac6743a3e760">00281</a> NDIS_STATUS <a class="code" href="struct__OPEN__INSTANCE.html#af4f46bc8ed07a40605aeac6743a3e760" title="Maintains the status of and OID request call, that will be passed to the application...">IOStatus</a>;
<a name="l00282"></a><a class="code" href="struct__OPEN__INSTANCE.html#affef27f71b541e5dfab6a3dc9ea7dd86">00282</a> HANDLE <a class="code" href="struct__OPEN__INSTANCE.html#affef27f71b541e5dfab6a3dc9ea7dd86" title="Handle of the file used in dump mode.">DumpFileHandle</a>;
<a name="l00283"></a><a class="code" href="struct__OPEN__INSTANCE.html#a093d2624638004aafcc3193328cf2626">00283</a> PFILE_OBJECT <a class="code" href="struct__OPEN__INSTANCE.html#a093d2624638004aafcc3193328cf2626" title="Pointer to the object of the file used in dump mode.">DumpFileObject</a>;
<a name="l00284"></a><a class="code" href="struct__OPEN__INSTANCE.html#af5fc8480398782ff1f676f25f5097768">00284</a> PKTHREAD <a class="code" href="struct__OPEN__INSTANCE.html#af5fc8480398782ff1f676f25f5097768" title="Pointer to the object of the thread used in dump mode.">DumpThreadObject</a>;
<a name="l00285"></a><a class="code" href="struct__OPEN__INSTANCE.html#afb4bb3d6e021e9b1cc1206fa23d4c8f7">00285</a> HANDLE <a class="code" href="struct__OPEN__INSTANCE.html#afb4bb3d6e021e9b1cc1206fa23d4c8f7" title="Handle of the thread created by dump mode to asynchronously move the buffer to disk...">DumpThreadHandle</a>;
<a name="l00286"></a><a class="code" href="struct__OPEN__INSTANCE.html#a1485cbdca5f70ed6a4eb8fd26feec1e0">00286</a> NDIS_EVENT <a class="code" href="struct__OPEN__INSTANCE.html#a1485cbdca5f70ed6a4eb8fd26feec1e0" title="Event used to synchronize the dump thread with the tap when the instance is in dump...">DumpEvent</a>;
<a name="l00287"></a><a class="code" href="struct__OPEN__INSTANCE.html#a00c3ae6811320e03dea5b400fc5f9da8">00287</a> LARGE_INTEGER <a class="code" href="struct__OPEN__INSTANCE.html#a00c3ae6811320e03dea5b400fc5f9da8" title="Current offset in the dump file.">DumpOffset</a>;
<a name="l00288"></a><a class="code" href="struct__OPEN__INSTANCE.html#ad26771cfc74dde2d2ce22b38db3124b0">00288</a> UNICODE_STRING <a class="code" href="struct__OPEN__INSTANCE.html#ad26771cfc74dde2d2ce22b38db3124b0" title="String containing the name of the dump file.">DumpFileName</a>;
<a name="l00289"></a><a class="code" href="struct__OPEN__INSTANCE.html#acfde736fb2a011607da168a05b5100b0">00289</a> UINT <a class="code" href="struct__OPEN__INSTANCE.html#acfde736fb2a011607da168a05b5100b0">MaxDumpBytes</a>;
<a name="l00290"></a>00290
<a name="l00291"></a><a class="code" href="struct__OPEN__INSTANCE.html#a3f6accd17a8dccf9b44acc678510a094">00291</a> UINT <a class="code" href="struct__OPEN__INSTANCE.html#a3f6accd17a8dccf9b44acc678510a094">MaxDumpPacks</a>;
<a name="l00292"></a>00292
<a name="l00293"></a>00293
<a name="l00294"></a><a class="code" href="struct__OPEN__INSTANCE.html#a612913cea459725cff2085d29e534aae">00294</a> BOOLEAN <a class="code" href="struct__OPEN__INSTANCE.html#a612913cea459725cff2085d29e534aae">DumpLimitReached</a>;
<a name="l00295"></a>00295
<a name="l00296"></a>00296 <span class="preprocessor">#ifdef HAVE_BUGGY_TME_SUPPORT</span>
<a name="l00297"></a>00297 <span class="preprocessor"></span> MEM_TYPE mem_ex;
<a name="l00298"></a>00298 TME_CORE tme;
<a name="l00299"></a>00299 <span class="preprocessor">#endif //HAVE_BUGGY_TME_SUPPORT</span>
<a name="l00300"></a>00300 <span class="preprocessor"></span>
<a name="l00301"></a><a class="code" href="struct__OPEN__INSTANCE.html#afe174f20f512159a454365613846eca5">00301</a> NDIS_SPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#afe174f20f512159a454365613846eca5" title="SpinLock that protects the BPF filter and the TME engine, if in use.">MachineLock</a>;
<a name="l00302"></a><a class="code" href="struct__OPEN__INSTANCE.html#ac672771358770d24087aaa12a80d01cb">00302</a> UINT <a class="code" href="struct__OPEN__INSTANCE.html#ac672771358770d24087aaa12a80d01cb">MaxFrameSize</a>;
<a name="l00303"></a>00303
<a name="l00304"></a>00304 <span class="comment">//</span>
<a name="l00305"></a>00305 <span class="comment">// KAFFINITY is used as a bit mask for the affinity in the system. So on every supported OS is big enough for all the CPUs on the system (32 bits on x86, 64 on x64?).</span>
<a name="l00306"></a>00306 <span class="comment">// We use its size to compute the max number of CPUs.</span>
<a name="l00307"></a>00307 <span class="comment">//</span>
<a name="l00308"></a><a class="code" href="struct__OPEN__INSTANCE.html#a289c7590d7f5d96fa9051d20c2a95a04">00308</a> <a class="code" href="struct____CPU__Private__Data.html" title="Kernel buffer of each CPU.">CpuPrivateData</a> <a class="code" href="struct__OPEN__INSTANCE.html#a289c7590d7f5d96fa9051d20c2a95a04" title="Pool of kernel buffer structures, one for each CPU.">CpuData</a>[<span class="keyword">sizeof</span>(KAFFINITY) * 8];
<a name="l00309"></a><a class="code" href="struct__OPEN__INSTANCE.html#a80fd41275e80049cbe8238917a1dfb33">00309</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#a80fd41275e80049cbe8238917a1dfb33" title="Sequence number of the next packet to be read from the pool of kernel buffers.">ReaderSN</a>;
<a name="l00310"></a><a class="code" href="struct__OPEN__INSTANCE.html#ae58565fec941091aa7164b49121ffe2b">00310</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#ae58565fec941091aa7164b49121ffe2b">WriterSN</a>;
<a name="l00311"></a>00311
<a name="l00312"></a><a class="code" href="struct__OPEN__INSTANCE.html#a1ce5ea4c97c82145e50d4b5157889a0e">00312</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#a1ce5ea4c97c82145e50d4b5157889a0e" title="Size of each kernel buffer contained in the CpuData field.">Size</a>;
<a name="l00313"></a><a class="code" href="struct__OPEN__INSTANCE.html#a7157ac074af79faeddb2feef7a891af7">00313</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#a7157ac074af79faeddb2feef7a891af7">AdapterHandleUsageCounter</a>;
<a name="l00314"></a><a class="code" href="struct__OPEN__INSTANCE.html#adbc32cf0b83107c2ad2785b8c71a946b">00314</a> NDIS_SPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#adbc32cf0b83107c2ad2785b8c71a946b">AdapterHandleLock</a>;
<a name="l00315"></a><a class="code" href="struct__OPEN__INSTANCE.html#aa8dd1c538f9932a866ac342d50277929">00315</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#aa8dd1c538f9932a866ac342d50277929" title="Specifies if NPF is still bound to the adapter used by this instance, it&#39;s unbinding...">AdapterBindingStatus</a>;
<a name="l00316"></a>00316
<a name="l00317"></a><a class="code" href="struct__OPEN__INSTANCE.html#a58faf70e2b245f7d3f2b1a90257e823e">00317</a> NDIS_EVENT <a class="code" href="struct__OPEN__INSTANCE.html#a58faf70e2b245f7d3f2b1a90257e823e">NdisOpenCloseCompleteEvent</a>;
<a name="l00318"></a><a class="code" href="struct__OPEN__INSTANCE.html#ae16d8f96321924cea79edfba9a2aed9f">00318</a> NDIS_EVENT <a class="code" href="struct__OPEN__INSTANCE.html#ae16d8f96321924cea79edfba9a2aed9f" title="Event that is signalled when all the packets have been successfully sent by NdisSend...">NdisWriteCompleteEvent</a>;
<a name="l00319"></a><a class="code" href="struct__OPEN__INSTANCE.html#ae3c547ec9f715618b461b221fa2e3f09">00319</a> NTSTATUS <a class="code" href="struct__OPEN__INSTANCE.html#ae3c547ec9f715618b461b221fa2e3f09">OpenCloseStatus</a>;
<a name="l00320"></a><a class="code" href="struct__OPEN__INSTANCE.html#a3134a9bd6b67acf8eb8f5fd7a36228d7">00320</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#a3134a9bd6b67acf8eb8f5fd7a36228d7" title="Specifies the number of packets that are pending to be transmitted, i.e. have been...">TransmitPendingPackets</a>;
<a name="l00321"></a><a class="code" href="struct__OPEN__INSTANCE.html#ad829423b08d53cd76dc8bed902d5af72">00321</a> ULONG <a class="code" href="struct__OPEN__INSTANCE.html#ad829423b08d53cd76dc8bed902d5af72">NumPendingIrps</a>;
<a name="l00322"></a><a class="code" href="struct__OPEN__INSTANCE.html#ae00f3e1e556edb44c5bbf7f4f75f117a">00322</a> BOOLEAN <a class="code" href="struct__OPEN__INSTANCE.html#ae00f3e1e556edb44c5bbf7f4f75f117a">ClosePending</a>;
<a name="l00323"></a><a class="code" href="struct__OPEN__INSTANCE.html#a4c6d0506eca78eb6602764234ce07e62">00323</a> NDIS_SPIN_LOCK <a class="code" href="struct__OPEN__INSTANCE.html#a4c6d0506eca78eb6602764234ce07e62">OpenInUseLock</a>;
<a name="l00324"></a>00324 }
<a name="l00325"></a>00325 <a class="code" href="struct__OPEN__INSTANCE.html" title="Contains the state of a running instance of the NPF driver.">OPEN_INSTANCE</a>, *<a class="code" href="struct__OPEN__INSTANCE.html" title="Contains the state of a running instance of the NPF driver.">POPEN_INSTANCE</a>;
<a name="l00326"></a>00326
<a name="l00327"></a><a class="code" href="group__NPF__include.html#gaa80226df1c5ee18b01580d23ed4f31cb">00327</a> <span class="keyword">enum</span> <a class="code" href="group__NPF__include.html#gaa80226df1c5ee18b01580d23ed4f31cb">ADAPTER_BINDING_STATUS</a>
<a name="l00328"></a>00328 {
<a name="l00329"></a><a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cba6e4cdf9f09abf447cffdfd5058357822">00329</a> <a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cba6e4cdf9f09abf447cffdfd5058357822">ADAPTER_UNBOUND</a>,
<a name="l00330"></a><a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cba3e0c0f314d2e9dc41c205ab44bf087bc">00330</a> <a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cba3e0c0f314d2e9dc41c205ab44bf087bc">ADAPTER_BOUND</a>,
<a name="l00331"></a><a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cbadc92e852ef35fac0f033487a3be66a93">00331</a> <a class="code" href="group__NPF__include.html#ggaa80226df1c5ee18b01580d23ed4f31cbadc92e852ef35fac0f033487a3be66a93">ADAPTER_UNBINDING</a>,
<a name="l00332"></a>00332 };
<a name="l00333"></a>00333
<a name="l00341"></a><a class="code" href="structPacketHeader.html">00341</a> <span class="keyword">struct </span><a class="code" href="structPacketHeader.html" title="Structure prepended to each packet in the kernel buffer pool.">PacketHeader</a>
<a name="l00342"></a>00342 {
<a name="l00343"></a><a class="code" href="structPacketHeader.html#afbd4efa90a98223b9ebe18574c057b47">00343</a> ULONG <a class="code" href="structPacketHeader.html#afbd4efa90a98223b9ebe18574c057b47" title="Sequence number of the packet.">SN</a>;
<a name="l00344"></a><a class="code" href="structPacketHeader.html#ae2f3ed1162db1cfdbd9abe8f203426ad">00344</a> <span class="keyword">struct </span>bpf_hdr <a class="code" href="structPacketHeader.html#ae2f3ed1162db1cfdbd9abe8f203426ad" title="bpf header, created by the tap, and copied unmodified to user level programs.">header</a>;
<a name="l00345"></a>00345 };
<a name="l00346"></a>00346
<a name="l00347"></a>00347 <span class="keyword">extern</span> ULONG <a class="code" href="group__NPF__include.html#ga980b14c18716a1788990f8e68fed9420">g_NCpu</a>;
<a name="l00348"></a>00348 <span class="keyword">extern</span> NDIS_HANDLE <a class="code" href="group__NPF__include.html#ga5d6fbe2176d19b191fa7aaac4d6d6bb5">g_NdisProtocolHandle</a>;
<a name="l00349"></a>00349 <span class="keyword">extern</span> <span class="keyword">struct </span>time_conv <a class="code" href="group__NPF__include.html#ga8bd3dab633cae7a1a47c4ddb2705a31b">G_Start_Time</a>; <span class="comment">// from openclos.c</span>
<a name="l00350"></a>00350 <span class="keyword">extern</span> UINT <a class="code" href="group__NPF__include.html#gab325d08691ab69e4f942f6a418a41db2">g_SendPacketFlags</a>;
<a name="l00351"></a>00351
<a name="l00352"></a><a class="code" href="group__NPF__include.html#ga652e6173ee1441712652d74a5533e042">00352</a> <span class="preprocessor">#define TRANSMIT_PACKETS 256 </span>
<a name="l00353"></a>00353 <span class="preprocessor"></span>
<a name="l00354"></a>00354 <span class="preprocessor"></span>
<a name="l00355"></a>00355 <span class="preprocessor"></span>
<a name="l00357"></a><a class="code" href="group__NPF__include.html#gacabf25322566f3bcd1e564e4939f5821">00357</a> <span class="preprocessor">#define EXIT_SUCCESS(quantity) Irp->IoStatus.Information=quantity;\</span>
<a name="l00358"></a>00358 <span class="preprocessor"> Irp->IoStatus.Status = STATUS_SUCCESS;\</span>
<a name="l00359"></a>00359 <span class="preprocessor"> IoCompleteRequest(Irp, IO_NO_INCREMENT);\</span>
<a name="l00360"></a>00360 <span class="preprocessor"> return STATUS_SUCCESS;\</span>
<a name="l00361"></a>00361 <span class="preprocessor"></span>
<a name="l00363"></a><a class="code" href="group__NPF__include.html#gad6d1f5522a147ddeb7d9b11916acd50a">00363</a> <span class="preprocessor">#define EXIT_FAILURE(quantity) Irp->IoStatus.Information=quantity;\</span>
<a name="l00364"></a>00364 <span class="preprocessor"> Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;\</span>
<a name="l00365"></a>00365 <span class="preprocessor"> IoCompleteRequest(Irp, IO_NO_INCREMENT);\</span>
<a name="l00366"></a>00366 <span class="preprocessor"> return STATUS_UNSUCCESSFUL;\</span>
<a name="l00367"></a>00367 <span class="preprocessor"></span>
<a name="l00368"></a>00368 <span class="preprocessor"></span>
<a name="l00373"></a>00373 <span class="comment">/***************************/</span>
<a name="l00374"></a>00374 <span class="comment">/* Prototypes */</span>
<a name="l00375"></a>00375 <span class="comment">/***************************/</span>
<a name="l00376"></a>00376
<a name="l00393"></a>00393 NTSTATUS
<a name="l00394"></a>00394 <a class="code" href="group__NPF__code.html#ga6502d781bd20234a06710b92d540baba" title="The initialization routine of the driver.">DriverEntry</a>(
<a name="l00395"></a>00395 IN PDRIVER_OBJECT DriverObject,
<a name="l00396"></a>00396 IN PUNICODE_STRING RegistryPath
<a name="l00397"></a>00397 );
<a name="l00398"></a>00398
<a name="l00408"></a>00408 PWCHAR <a class="code" href="group__NPF__code.html#gafc395636686df00f554efbd2010f73cb" title="Returns the list of the MACs available on the system.">getAdaptersList</a>(VOID);
<a name="l00409"></a>00409
<a name="l00416"></a>00416 PKEY_VALUE_PARTIAL_INFORMATION <a class="code" href="group__NPF__code.html#gacf0e32b371eb9283e5cf1de0dfb15629" title="Returns the MACs that bind to TCP/IP.">getTcpBindings</a>(VOID);
<a name="l00417"></a>00417
<a name="l00428"></a>00428 BOOLEAN <a class="code" href="group__NPF__code.html#ga5d152d59c86209c5128ac788a7ae61b3" title="Creates a device for a given MAC.">NPF_CreateDevice</a>(
<a name="l00429"></a>00429 IN OUT PDRIVER_OBJECT adriverObjectP,
<a name="l00430"></a>00430 IN PUNICODE_STRING amacNameP
<a name="l00431"></a>00431 );
<a name="l00443"></a>00443 NTSTATUS
<a name="l00444"></a>00444 <a class="code" href="group__NPF__code.html#ga82e557625e52fe4395bbe2e494fe8c4a" title="Opens a new instance of the driver.">NPF_Open</a>(
<a name="l00445"></a>00445 IN PDEVICE_OBJECT DeviceObject,
<a name="l00446"></a>00446 IN PIRP Irp
<a name="l00447"></a>00447 );
<a name="l00448"></a>00448
<a name="l00458"></a>00458 VOID
<a name="l00459"></a>00459 <a class="code" href="group__NPF__code.html#ga155ae51be29c6d36f8109781b8f6e7b2" title="Ends the opening of an adapter.">NPF_OpenAdapterComplete</a>(
<a name="l00460"></a>00460 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00461"></a>00461 IN NDIS_STATUS Status,
<a name="l00462"></a>00462 IN NDIS_STATUS OpenErrorStatus
<a name="l00463"></a>00463 );
<a name="l00464"></a>00464
<a name="l00475"></a>00475 NTSTATUS
<a name="l00476"></a>00476 <a class="code" href="group__NPF__code.html#gafae94a0e7fda8de180cff6e596cc2803" title="Closes an instance of the driver.">NPF_Cleanup</a>(
<a name="l00477"></a>00477 IN PDEVICE_OBJECT DeviceObject,
<a name="l00478"></a>00478 IN PIRP Irp
<a name="l00479"></a>00479 );
<a name="l00480"></a>00480
<a name="l00481"></a>00481 NTSTATUS
<a name="l00482"></a>00482 <a class="code" href="group__NPF__code.html#gaf8b70be389645c912cf09f1e9ea4b975">NPF_Close</a>(
<a name="l00483"></a>00483 IN PDEVICE_OBJECT DeviceObject,
<a name="l00484"></a>00484 IN PIRP Irp
<a name="l00485"></a>00485 );
<a name="l00486"></a>00486
<a name="l00487"></a>00487
<a name="l00488"></a>00488
<a name="l00497"></a>00497 VOID
<a name="l00498"></a>00498 <a class="code" href="group__NPF__code.html#ga300118a9a6cc28c2c880f6bb39d86b53" title="Ends the closing of an adapter.">NPF_CloseAdapterComplete</a>(
<a name="l00499"></a>00499 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00500"></a>00500 IN NDIS_STATUS Status
<a name="l00501"></a>00501 );
<a name="l00502"></a>00502
<a name="l00525"></a>00525 NDIS_STATUS
<a name="l00526"></a>00526 <a class="code" href="group__NPF__code.html#ga92f84ced372baf09f1c00a6b252a0564" title="Callback invoked by NDIS when a packet arrives from the network.">NPF_tap</a>(
<a name="l00527"></a>00527 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00528"></a>00528 IN NDIS_HANDLE MacReceiveContext,
<a name="l00529"></a>00529 IN PVOID HeaderBuffer,
<a name="l00530"></a>00530 IN UINT HeaderBufferSize,
<a name="l00531"></a>00531 IN PVOID LookAheadBuffer,
<a name="l00532"></a>00532 IN UINT LookaheadBufferSize,
<a name="l00533"></a>00533 IN UINT PacketSize
<a name="l00534"></a>00534 );
<a name="l00535"></a>00535
<a name="l00546"></a>00546 VOID
<a name="l00547"></a>00547 <a class="code" href="group__NPF__code.html#ga0c34f931d6718be202c7c62406f279fd" title="Ends the transfer of a packet.">NPF_TransferDataComplete</a>(
<a name="l00548"></a>00548 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00549"></a>00549 IN PNDIS_PACKET Packet,
<a name="l00550"></a>00550 IN NDIS_STATUS Status,
<a name="l00551"></a>00551 IN UINT BytesTransferred
<a name="l00552"></a>00552 );
<a name="l00553"></a>00553
<a name="l00560"></a>00560 VOID
<a name="l00561"></a>00561 <a class="code" href="group__NPF__code.html#gae7863db01a628ed11324c49953195855" title="Callback function that signals the end of a packet reception.">NPF_ReceiveComplete</a>(IN NDIS_HANDLE ProtocolBindingContext);
<a name="l00562"></a>00562
<a name="l00586"></a>00586 NTSTATUS
<a name="l00587"></a>00587 <a class="code" href="group__NPF__code.html#gad8b208720b6e5149dabcd7fb058b16f7" title="Handles the IOCTL calls.">NPF_IoControl</a>(
<a name="l00588"></a>00588 IN PDEVICE_OBJECT DeviceObject,
<a name="l00589"></a>00589 IN PIRP Irp
<a name="l00590"></a>00590 );
<a name="l00591"></a>00591
<a name="l00592"></a>00592 VOID
<a name="l00593"></a>00593
<a name="l00603"></a>00603 <a class="code" href="group__NPF__code.html#ga4ff37c0fd3273f829a1f84b9ab40755b" title="Ends an OID request.">NPF_RequestComplete</a>(
<a name="l00604"></a>00604 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00605"></a>00605 IN PNDIS_REQUEST pRequest,
<a name="l00606"></a>00606 IN NDIS_STATUS Status
<a name="l00607"></a>00607 );
<a name="l00608"></a>00608
<a name="l00621"></a>00621 NTSTATUS
<a name="l00622"></a>00622 <a class="code" href="group__NPF__code.html#ga595338435296a4d1e15363ebfcb3a38c" title="Writes a raw packet to the network.">NPF_Write</a>(
<a name="l00623"></a>00623 IN PDEVICE_OBJECT DeviceObject,
<a name="l00624"></a>00624 IN PIRP Irp
<a name="l00625"></a>00625 );
<a name="l00626"></a>00626
<a name="l00627"></a>00627
<a name="l00647"></a>00647 INT <a class="code" href="group__NPF__code.html#ga9a97dd25ae757da4bfed3723a4eb4bce" title="Writes a buffer of raw packets to the network.">NPF_BufferedWrite</a>(IN PIRP Irp,
<a name="l00648"></a>00648 IN PCHAR UserBuff,
<a name="l00649"></a>00649 IN ULONG UserBuffSize,
<a name="l00650"></a>00650 BOOLEAN sync);
<a name="l00651"></a>00651
<a name="l00659"></a>00659 VOID <a class="code" href="group__NPF__code.html#ga8861b474efcb6578c9fe2075ff3e6aef" title="Waits the completion of all the sends performed by NPF_BufferedWrite.">NPF_WaitEndOfBufferedWrite</a>(POPEN_INSTANCE Open);
<a name="l00660"></a>00660
<a name="l00670"></a>00670 VOID
<a name="l00671"></a>00671 <a class="code" href="group__NPF__code.html#gaed126572458eed2dcd18d1824ac86601" title="Ends a send operation.">NPF_SendComplete</a>(
<a name="l00672"></a>00672 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00673"></a>00673 IN PNDIS_PACKET pPacket,
<a name="l00674"></a>00674 IN NDIS_STATUS Status
<a name="l00675"></a>00675 );
<a name="l00676"></a>00676
<a name="l00686"></a>00686 VOID
<a name="l00687"></a>00687 <a class="code" href="group__NPF__code.html#ga4e7934d9adb1826ed5e9112b9182f74a" title="Ends a reset of the adapter.">NPF_ResetComplete</a>(
<a name="l00688"></a>00688 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00689"></a>00689 IN NDIS_STATUS Status
<a name="l00690"></a>00690 );
<a name="l00691"></a>00691
<a name="l00695"></a>00695 VOID
<a name="l00696"></a>00696 <a class="code" href="group__NPF__code.html#ga1a8cf4fdeed6e93fcf1f50da654402b7" title="Callback for NDIS StatusHandler. Not used by NPF.">NPF_Status</a>(
<a name="l00697"></a>00697 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00698"></a>00698 IN NDIS_STATUS Status,
<a name="l00699"></a>00699 IN PVOID StatusBuffer,
<a name="l00700"></a>00700 IN UINT StatusBufferSize
<a name="l00701"></a>00701 );
<a name="l00702"></a>00702
<a name="l00703"></a>00703
<a name="l00707"></a>00707 VOID
<a name="l00708"></a>00708 <a class="code" href="group__NPF__code.html#ga70f97109adcd6de8b157534e5ecf2e56" title="Callback for NDIS StatusCompleteHandler. Not used by NPF.">NPF_StatusComplete</a>(IN NDIS_HANDLE ProtocolBindingContext);
<a name="l00709"></a>00709
<a name="l00718"></a>00718 VOID
<a name="l00719"></a>00719 <a class="code" href="group__NPF__code.html#ga5eb5a8e754198d1bbc6572cbc9e59b9c" title="Function called by the OS when NPF is unloaded.">NPF_Unload</a>(IN PDRIVER_OBJECT DriverObject);
<a name="l00720"></a>00720
<a name="l00721"></a>00721
<a name="l00740"></a>00740 NTSTATUS
<a name="l00741"></a>00741 <a class="code" href="group__NPF__code.html#ga827b1433b2d08cbac11b3844d721668f" title="Function that serves the user&#39;s reads.">NPF_Read</a>(
<a name="l00742"></a>00742 IN PDEVICE_OBJECT DeviceObject,
<a name="l00743"></a>00743 IN PIRP Irp
<a name="l00744"></a>00744 );
<a name="l00745"></a>00745
<a name="l00751"></a>00751 NTSTATUS
<a name="l00752"></a>00752 <a class="code" href="group__NPF__code.html#ga1a3ce25625792c74e5792b8fa86a489c" title="Reads the registry keys associated woth NPF if the driver is manually installed via...">NPF_ReadRegistry</a>(
<a name="l00753"></a>00753 IN PWSTR *MacDriverName,
<a name="l00754"></a>00754 IN PWSTR *PacketDriverName,
<a name="l00755"></a>00755 IN PUNICODE_STRING RegistryPath
<a name="l00756"></a>00756 );
<a name="l00757"></a>00757
<a name="l00764"></a>00764 NTSTATUS
<a name="l00765"></a>00765 <a class="code" href="group__NPF__code.html#ga8831b54dcd5361e81ddf0d3165f1fb8f" title="Function used by NPF_ReadRegistry() to quesry the registry keys associated woth NPF...">NPF_QueryRegistryRoutine</a>(
<a name="l00766"></a>00766 IN PWSTR ValueName,
<a name="l00767"></a>00767 IN ULONG ValueType,
<a name="l00768"></a>00768 IN PVOID ValueData,
<a name="l00769"></a>00769 IN ULONG ValueLength,
<a name="l00770"></a>00770 IN PVOID Context,
<a name="l00771"></a>00771 IN PVOID EntryContext
<a name="l00772"></a>00772 );
<a name="l00773"></a>00773
<a name="l00779"></a>00779 VOID <a class="code" href="group__NPF__code.html#ga9a78f9937b2d7d00250f49dcaeb5bab0" title="Callback for NDIS BindAdapterHandler. Not used by NPF.">NPF_BindAdapter</a>(
<a name="l00780"></a>00780 OUT PNDIS_STATUS Status,
<a name="l00781"></a>00781 IN NDIS_HANDLE BindContext,
<a name="l00782"></a>00782 IN PNDIS_STRING DeviceName,
<a name="l00783"></a>00783 IN PVOID SystemSpecific1,
<a name="l00784"></a>00784 IN PVOID SystemSpecific2
<a name="l00785"></a>00785 );
<a name="l00786"></a>00786
<a name="l00798"></a>00798 VOID
<a name="l00799"></a>00799 <a class="code" href="group__NPF__code.html#ga54d94e883ff4c580289eefaf0d1fc356" title="Callback for NDIS UnbindAdapterHandler.">NPF_UnbindAdapter</a>(
<a name="l00800"></a>00800 OUT PNDIS_STATUS Status,
<a name="l00801"></a>00801 IN NDIS_HANDLE ProtocolBindingContext,
<a name="l00802"></a>00802 IN NDIS_HANDLE UnbindContext
<a name="l00803"></a>00803 );
<a name="l00804"></a>00804
<a name="l00805"></a>00805
<a name="l00813"></a>00813 NTSTATUS <a class="code" href="group__NPF__code.html#gae3d1118c72b474fe214517a65afdfe09" title="Creates the file that will receive the packets when the driver is in dump mode.">NPF_OpenDumpFile</a>(POPEN_INSTANCE Open , PUNICODE_STRING fileName, BOOLEAN append);
<a name="l00814"></a>00814
<a name="l00823"></a>00823 NTSTATUS <a class="code" href="group__NPF__code.html#gaeffce124cbc3e3ae09bd7a6d10367cbb" title="Starts dump to file.">NPF_StartDump</a>(POPEN_INSTANCE Open);
<a name="l00824"></a>00824
<a name="l00832"></a>00832 VOID <a class="code" href="group__NPF__code.html#ga1566082cef91cf79ba4a855e3f44ede9" title="The dump thread.">NPF_DumpThread</a>(PVOID Open);
<a name="l00833"></a>00833
<a name="l00840"></a>00840 NTSTATUS <a class="code" href="group__NPF__code.html#gafcdcf5a4d9bfb8fbdb179963d4c789bd" title="Saves the content of the packet buffer to the file associated with current instance...">NPF_SaveCurrentBuffer</a>(POPEN_INSTANCE Open);
<a name="l00841"></a>00841
<a name="l00854"></a>00854 VOID <a class="code" href="group__NPF__code.html#ga57b9ee7752f00c8858bda8ca060a033b" title="Writes a block of packets on the dump file.">NPF_WriteDumpFile</a>(PFILE_OBJECT FileObject,
<a name="l00855"></a>00855 PLARGE_INTEGER Offset,
<a name="l00856"></a>00856 ULONG Length,
<a name="l00857"></a>00857 PMDL Mdl,
<a name="l00858"></a>00858 PIO_STATUS_BLOCK IoStatusBlock);
<a name="l00859"></a>00859
<a name="l00860"></a>00860
<a name="l00861"></a>00861
<a name="l00867"></a>00867 NTSTATUS <a class="code" href="group__NPF__code.html#gac911742b9f71c12c77452614db14c4a1" title="Closes the dump file associated with an instance of the driver.">NPF_CloseDumpFile</a>(POPEN_INSTANCE Open);
<a name="l00868"></a>00868
<a name="l00869"></a>00869 BOOLEAN
<a name="l00870"></a>00870 <a class="code" href="group__NPF__code.html#ga64dab96bfced5d22cc55a42fc6339833">NPF_StartUsingBinding</a>(
<a name="l00871"></a>00871 IN POPEN_INSTANCE pOpen);
<a name="l00872"></a>00872
<a name="l00873"></a>00873 VOID
<a name="l00874"></a>00874 <a class="code" href="group__NPF__code.html#gacd54077d4c2d9186486d3504523ba4f0">NPF_StopUsingBinding</a>(
<a name="l00875"></a>00875 IN POPEN_INSTANCE pOpen);
<a name="l00876"></a>00876
<a name="l00877"></a>00877 VOID
<a name="l00878"></a>00878 <a class="code" href="group__NPF__code.html#ga76d4e48415cea8e0e65ba93d7355b89f">NPF_CloseBinding</a>(
<a name="l00879"></a>00879 IN POPEN_INSTANCE pOpen);
<a name="l00880"></a>00880
<a name="l00881"></a>00881 BOOLEAN
<a name="l00882"></a>00882 <a class="code" href="group__NPF__code.html#ga504e61b1229a9a604080fc8607b24084">NPF_StartUsingOpenInstance</a>(
<a name="l00883"></a>00883 IN POPEN_INSTANCE pOpen);
<a name="l00884"></a>00884
<a name="l00885"></a>00885 VOID
<a name="l00886"></a>00886 <a class="code" href="group__NPF__code.html#ga6ceb77291c077b05efd3b588a6a30867">NPF_StopUsingOpenInstance</a>(
<a name="l00887"></a>00887 IN POPEN_INSTANCE pOpen);
<a name="l00888"></a>00888
<a name="l00889"></a>00889 VOID
<a name="l00890"></a>00890 <a class="code" href="group__NPF__code.html#ga99878d91732973e7b4020d8e42b4cf32">NPF_CloseOpenInstance</a>(
<a name="l00891"></a>00891 IN POPEN_INSTANCE pOpen);
<a name="l00892"></a>00892
<a name="l00893"></a>00893 NTSTATUS
<a name="l00894"></a>00894 <a class="code" href="group__NPF__code.html#ga8bad85679d2e8c57f7501052f9b07284">NPF_GetDeviceMTU</a>(
<a name="l00895"></a>00895 IN POPEN_INSTANCE pOpen,
<a name="l00896"></a>00896 IN PIRP pIrp,
<a name="l00897"></a>00897 OUT PUINT pMtu);
<a name="l00898"></a>00898
<a name="l00903"></a>00903 UINT <a class="code" href="group__NPF__code.html#gadd6737f745e21b37b8613b489a96687d" title="Returns the amount of bytes present in the packet buffer.">GetBuffOccupation</a>(POPEN_INSTANCE Open);
<a name="l00904"></a>00904
<a name="l00916"></a>00916 <span class="preprocessor">#ifdef NDIS50</span>
<a name="l00917"></a>00917 <span class="preprocessor"></span>NDIS_STATUS NPF_PowerChange(IN NDIS_HANDLE ProtocolBindingContext, IN PNET_PNP_EVENT pNetPnPEvent);
<a name="l00918"></a>00918 <span class="preprocessor">#endif</span>
<a name="l00919"></a>00919 <span class="preprocessor"></span>
<a name="l00920"></a>00920 <span class="comment">// </span>
<a name="l00921"></a>00921 <span class="comment">// Old registry based WinPcap names</span>
<a name="l00922"></a>00922 <span class="comment">//</span>
<a name="l00924"></a>00924 <span class="comment"></span><span class="comment">// \brief Helper function to query a value from the global WinPcap registry key</span>
<a name="l00925"></a>00925 <span class="comment">//*/</span>
<a name="l00926"></a>00926 <span class="comment">//VOID NPF_QueryWinpcapRegistryString(PWSTR SubKeyName,</span>
<a name="l00927"></a>00927 <span class="comment">// WCHAR *Value,</span>
<a name="l00928"></a>00928 <span class="comment">// UINT ValueLen, </span>
<a name="l00929"></a>00929 <span class="comment">// WCHAR *DefaultValue);</span>
<a name="l00930"></a>00930 <span class="comment">//</span>
<a name="l00931"></a>00931
<a name="l00932"></a>00932
<a name="l00941"></a>00941 <span class="preprocessor">#endif </span><span class="comment">/*main ifndef/define*/</span>
</pre></div></div>
<hr>
<p align="right"><img border="0" src="winpcap_small.gif" align="absbottom" width="91" height="27">
documentation. Copyright (c) 2002-2005 Politecnico di Torino. Copyright (c) 2005-2009
CACE Technologies. All rights reserved.</p>
|