⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 packet_8h-source.html

📁 Winpcap是一个强大的网络开发库
💻 HTML
📖 第 1 页 / 共 5 页
字号:
<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#263f7d6f5db5625541d275380685f0b1">00263</a> <span class="preprocessor"></span>    UINT                <a class="code" href="struct__OPEN__INSTANCE.html#263f7d6f5db5625541d275380685f0b1">MinToCopy</a>;          <a name="l00264"></a>00264 <a name="l00265"></a><a class="code" href="struct__OPEN__INSTANCE.html#a6709070de8443c026e3b86913942c2b">00265</a>     LARGE_INTEGER       <a class="code" href="struct__OPEN__INSTANCE.html#a6709070de8443c026e3b86913942c2b">TimeOut</a>;            <a name="l00266"></a>00266 <a name="l00267"></a>00267                                             <a name="l00268"></a><a class="code" href="struct__OPEN__INSTANCE.html#1ea5d0cb93f22f7d0fdf804bd68c3326">00268</a>     <span class="keywordtype">int</span>                 <a class="code" href="struct__OPEN__INSTANCE.html#1ea5d0cb93f22f7d0fdf804bd68c3326" title="Working mode of the driver. See PacketSetMode() for details.">mode</a>;               <a name="l00269"></a><a class="code" href="struct__OPEN__INSTANCE.html#87b5968c02200b033f7c6e15da439e62">00269</a>     LARGE_INTEGER       <a class="code" href="struct__OPEN__INSTANCE.html#87b5968c02200b033f7c6e15da439e62" 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#51a42386327e2a337854dd20cbe83061">00270</a>     LARGE_INTEGER       <a class="code" href="struct__OPEN__INSTANCE.html#51a42386327e2a337854dd20cbe83061" 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#7bd68a3950090232f1147e501a4ccf78">00271</a>     NDIS_SPIN_LOCK      <a class="code" href="struct__OPEN__INSTANCE.html#7bd68a3950090232f1147e501a4ccf78" title="SpinLock that protects the statistical mode counters.">CountersLock</a>;       <a name="l00272"></a><a class="code" href="struct__OPEN__INSTANCE.html#f6b5b0a348f7a40d795b554b0eceed73">00272</a>     UINT                <a class="code" href="struct__OPEN__INSTANCE.html#f6b5b0a348f7a40d795b554b0eceed73">Nwrites</a>;            <a name="l00273"></a>00273 <a name="l00274"></a><a class="code" href="struct__OPEN__INSTANCE.html#aa76c3b87b73baaa785c459188d769e0">00274</a>     ULONG               <a class="code" href="struct__OPEN__INSTANCE.html#aa76c3b87b73baaa785c459188d769e0" 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#46f6423b318291c7cc6ae32c226b33fd">00275</a>     NDIS_EVENT          <a class="code" href="struct__OPEN__INSTANCE.html#46f6423b318291c7cc6ae32c226b33fd" title="Event used to synchronize the multiple write process.">WriteEvent</a>;         <a name="l00276"></a><a class="code" href="struct__OPEN__INSTANCE.html#f854d4eefa0f15302eaccee06e1ef447">00276</a>     BOOLEAN             <a class="code" href="struct__OPEN__INSTANCE.html#f854d4eefa0f15302eaccee06e1ef447">WriteInProgress</a>;    <a name="l00277"></a>00277 <a name="l00278"></a><a class="code" href="struct__OPEN__INSTANCE.html#44ab7ba650b09972a0677958ad0ea4e0">00278</a>     NDIS_SPIN_LOCK      <a class="code" href="struct__OPEN__INSTANCE.html#44ab7ba650b09972a0677958ad0ea4e0" title="SpinLock that protects the WriteInProgress variable.">WriteLock</a>;          <a name="l00279"></a><a class="code" href="struct__OPEN__INSTANCE.html#f63559424b5849687cc5c5fbad184c0f">00279</a>     NDIS_EVENT          <a class="code" href="struct__OPEN__INSTANCE.html#f63559424b5849687cc5c5fbad184c0f" 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#445a6029d067430cd761ae692443b573">00280</a>     BOOLEAN             <a class="code" href="struct__OPEN__INSTANCE.html#445a6029d067430cd761ae692443b573" 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#f4f46bc8ed07a40605aeac6743a3e760">00281</a>     NDIS_STATUS         <a class="code" href="struct__OPEN__INSTANCE.html#f4f46bc8ed07a40605aeac6743a3e760" 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#ffef27f71b541e5dfab6a3dc9ea7dd86">00282</a>     HANDLE              <a class="code" href="struct__OPEN__INSTANCE.html#ffef27f71b541e5dfab6a3dc9ea7dd86" title="Handle of the file used in dump mode.">DumpFileHandle</a>;     <a name="l00283"></a><a class="code" href="struct__OPEN__INSTANCE.html#093d2624638004aafcc3193328cf2626">00283</a>     PFILE_OBJECT        <a class="code" href="struct__OPEN__INSTANCE.html#093d2624638004aafcc3193328cf2626" 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#f5fc8480398782ff1f676f25f5097768">00284</a>     PKTHREAD            <a class="code" href="struct__OPEN__INSTANCE.html#f5fc8480398782ff1f676f25f5097768" 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#fb4bb3d6e021e9b1cc1206fa23d4c8f7">00285</a>     HANDLE              <a class="code" href="struct__OPEN__INSTANCE.html#fb4bb3d6e021e9b1cc1206fa23d4c8f7" 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#1485cbdca5f70ed6a4eb8fd26feec1e0">00286</a>     NDIS_EVENT          <a class="code" href="struct__OPEN__INSTANCE.html#1485cbdca5f70ed6a4eb8fd26feec1e0" 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#00c3ae6811320e03dea5b400fc5f9da8">00287</a>     LARGE_INTEGER       <a class="code" href="struct__OPEN__INSTANCE.html#00c3ae6811320e03dea5b400fc5f9da8" title="Current offset in the dump file.">DumpOffset</a>;         <a name="l00288"></a><a class="code" href="struct__OPEN__INSTANCE.html#d26771cfc74dde2d2ce22b38db3124b0">00288</a>     UNICODE_STRING      <a class="code" href="struct__OPEN__INSTANCE.html#d26771cfc74dde2d2ce22b38db3124b0" title="String containing the name of the dump file.">DumpFileName</a>;       <a name="l00289"></a><a class="code" href="struct__OPEN__INSTANCE.html#cfde736fb2a011607da168a05b5100b0">00289</a>     UINT                <a class="code" href="struct__OPEN__INSTANCE.html#cfde736fb2a011607da168a05b5100b0">MaxDumpBytes</a>;       <a name="l00290"></a>00290 <a name="l00291"></a><a class="code" href="struct__OPEN__INSTANCE.html#3f6accd17a8dccf9b44acc678510a094">00291</a>     UINT                <a class="code" href="struct__OPEN__INSTANCE.html#3f6accd17a8dccf9b44acc678510a094">MaxDumpPacks</a>;       <a name="l00292"></a>00292 <a name="l00293"></a>00293 <a name="l00294"></a><a class="code" href="struct__OPEN__INSTANCE.html#612913cea459725cff2085d29e534aae">00294</a>     BOOLEAN             <a class="code" href="struct__OPEN__INSTANCE.html#612913cea459725cff2085d29e534aae">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#fe174f20f512159a454365613846eca5">00301</a>     NDIS_SPIN_LOCK      <a class="code" href="struct__OPEN__INSTANCE.html#fe174f20f512159a454365613846eca5" 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#c672771358770d24087aaa12a80d01cb">00302</a>     UINT                <a class="code" href="struct__OPEN__INSTANCE.html#c672771358770d24087aaa12a80d01cb">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#289c7590d7f5d96fa9051d20c2a95a04">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#289c7590d7f5d96fa9051d20c2a95a04" 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#80fd41275e80049cbe8238917a1dfb33">00309</a>     ULONG               <a class="code" href="struct__OPEN__INSTANCE.html#80fd41275e80049cbe8238917a1dfb33" 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#e58565fec941091aa7164b49121ffe2b">00310</a>     ULONG               <a class="code" href="struct__OPEN__INSTANCE.html#e58565fec941091aa7164b49121ffe2b">WriterSN</a>;           <a name="l00311"></a>00311 <a name="l00312"></a><a class="code" href="struct__OPEN__INSTANCE.html#1ce5ea4c97c82145e50d4b5157889a0e">00312</a>     ULONG               <a class="code" href="struct__OPEN__INSTANCE.html#1ce5ea4c97c82145e50d4b5157889a0e" 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#7157ac074af79faeddb2feef7a891af7">00313</a>     ULONG              <a class="code" href="struct__OPEN__INSTANCE.html#7157ac074af79faeddb2feef7a891af7">AdapterHandleUsageCounter</a>;<a name="l00314"></a><a class="code" href="struct__OPEN__INSTANCE.html#dbc32cf0b83107c2ad2785b8c71a946b">00314</a>     NDIS_SPIN_LOCK     <a class="code" href="struct__OPEN__INSTANCE.html#dbc32cf0b83107c2ad2785b8c71a946b">AdapterHandleLock</a>;<a name="l00315"></a><a class="code" href="struct__OPEN__INSTANCE.html#a8dd1c538f9932a866ac342d50277929">00315</a>     ULONG              <a class="code" href="struct__OPEN__INSTANCE.html#a8dd1c538f9932a866ac342d50277929" title="Specifies if NPF is still bound to the adapter used by this instance, it&amp;#39;s unbinding...">AdapterBindingStatus</a>;    <a name="l00316"></a>00316 <a name="l00317"></a><a class="code" href="struct__OPEN__INSTANCE.html#58faf70e2b245f7d3f2b1a90257e823e">00317</a>     NDIS_EVENT         <a class="code" href="struct__OPEN__INSTANCE.html#58faf70e2b245f7d3f2b1a90257e823e">NdisOpenCloseCompleteEvent</a>;<a name="l00318"></a><a class="code" href="struct__OPEN__INSTANCE.html#e16d8f96321924cea79edfba9a2aed9f">00318</a>     NDIS_EVENT         <a class="code" href="struct__OPEN__INSTANCE.html#e16d8f96321924cea79edfba9a2aed9f" 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#e3c547ec9f715618b461b221fa2e3f09">00319</a>     NTSTATUS           <a class="code" href="struct__OPEN__INSTANCE.html#e3c547ec9f715618b461b221fa2e3f09">OpenCloseStatus</a>;<a name="l00320"></a><a class="code" href="struct__OPEN__INSTANCE.html#3134a9bd6b67acf8eb8f5fd7a36228d7">00320</a>     ULONG              <a class="code" href="struct__OPEN__INSTANCE.html#3134a9bd6b67acf8eb8f5fd7a36228d7" title="Specifies the number of packets that are pending to be transmitted, i.e. have been...">TransmitPendingPackets</a>;  <a name="l00321"></a>00321 }<a name="l00322"></a>00322 <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="l00323"></a>00323 <a name="l00324"></a><a class="code" href="group__NPF__include.html#ga80226df1c5ee18b01580d23ed4f31cb">00324</a> <span class="keyword">enum</span> <a class="code" href="group__NPF__include.html#ga80226df1c5ee18b01580d23ed4f31cb">ADAPTER_BINDING_STATUS</a><a name="l00325"></a>00325 {<a name="l00326"></a><a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cb6e4cdf9f09abf447cffdfd5058357822">00326</a>     <a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cb6e4cdf9f09abf447cffdfd5058357822">ADAPTER_UNBOUND</a>,<a name="l00327"></a><a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cb3e0c0f314d2e9dc41c205ab44bf087bc">00327</a>     <a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cb3e0c0f314d2e9dc41c205ab44bf087bc">ADAPTER_BOUND</a>,<a name="l00328"></a><a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cbdc92e852ef35fac0f033487a3be66a93">00328</a>     <a class="code" href="group__NPF__include.html#gga80226df1c5ee18b01580d23ed4f31cbdc92e852ef35fac0f033487a3be66a93">ADAPTER_UNBINDING</a>,<a name="l00329"></a>00329 };<a name="l00330"></a>00330 <a name="l00338"></a><a class="code" href="structPacketHeader.html">00338</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="l00339"></a>00339 {<a name="l00340"></a><a class="code" href="structPacketHeader.html#fbd4efa90a98223b9ebe18574c057b47">00340</a>     ULONG <a class="code" href="structPacketHeader.html#fbd4efa90a98223b9ebe18574c057b47" title="Sequence number of the packet.">SN</a>;                               <a name="l00341"></a><a class="code" href="structPacketHeader.html#e2f3ed1162db1cfdbd9abe8f203426ad">00341</a>     <span class="keyword">struct </span>bpf_hdr <a class="code" href="structPacketHeader.html#e2f3ed1162db1cfdbd9abe8f203426ad" title="bpf header, created by the tap, and copied unmodified to user level programs.">header</a>;                  <a name="l00342"></a>00342 };<a name="l00343"></a>00343 <a name="l00344"></a>00344 <span class="keyword">extern</span> ULONG        <a class="code" href="group__NPF__include.html#g980b14c18716a1788990f8e68fed9420">g_NCpu</a>;<a name="l00345"></a>00345 <span class="keyword">extern</span> NDIS_HANDLE  <a class="code" href="group__NPF__include.html#g5d6fbe2176d19b191fa7aaac4d6d6bb5">g_NdisProtocolHandle</a>;<a name="l00346"></a>00346 <span class="keyword">extern</span> <span class="keyword">struct </span>time_conv <a class="code" href="group__NPF__include.html#g8bd3dab633cae7a1a47c4ddb2705a31b">G_Start_Time</a>; <span class="comment">// from openclos.c</span><a name="l00347"></a>00347 <span class="keyword">extern</span> UINT         <a class="code" href="group__NPF__include.html#gb325d08691ab69e4f942f6a418a41db2">g_SendPacketFlags</a>;<a name="l00348"></a>00348 <a name="l00349"></a><a class="code" href="group__NPF__include.html#g652e6173ee1441712652d74a5533e042">00349</a> <span class="preprocessor">#define TRANSMIT_PACKETS 256    </span><a name="l00350"></a>00350 <span class="preprocessor"></span><a name="l00351"></a>00351 <span class="preprocessor"></span><a name="l00352"></a>00352 <span class="preprocessor"></span><a name="l00354"></a><a class="code" href="group__NPF__include.html#gcabf25322566f3bcd1e564e4939f5821">00354</a> <span class="preprocessor">#define EXIT_SUCCESS(quantity) Irp-&gt;IoStatus.Information=quantity;\</span><a name="l00355"></a>00355 <span class="preprocessor">    Irp-&gt;IoStatus.Status = STATUS_SUCCESS;\</span><a name="l00356"></a>00356 <span class="preprocessor">    IoCompleteRequest(Irp, IO_NO_INCREMENT);\</span><a name="l00357"></a>00357 <span class="preprocessor">    return STATUS_SUCCESS;\</span><a name="l00358"></a>00358 <span class="preprocessor"></span><a name="l00360"></a><a class="code" href="group__NPF__include.html#gd6d1f5522a147ddeb7d9b11916acd50a">00360</a> <span class="preprocessor">#define EXIT_FAILURE(quantity) Irp-&gt;IoStatus.Information=quantity;\</span><a name="l00361"></a>00361 <span class="preprocessor">    Irp-&gt;IoStatus.Status = STATUS_UNSUCCESSFUL;\</span><a name="l00362"></a>00362 <span class="preprocessor">    IoCompleteRequest(Irp, IO_NO_INCREMENT);\</span><a name="l00363"></a>00363 <span class="preprocessor">    return STATUS_UNSUCCESSFUL;\</span><a name="l00364"></a>00364 <span class="preprocessor"></span><a name="l00365"></a>00365 <span class="preprocessor"></span><a name="l00370"></a>00370 <span class="comment">/***************************/</span><a name="l00371"></a>00371 <span class="comment">/*       Prototypes        */</span><a name="l00372"></a>00372 <span class="comment">/***************************/</span><a name="l00373"></a>00373 <a name="l00390"></a>00390 NTSTATUS<a name="l00391"></a>00391 <a class="code" href="group__NPF__code.html#g6502d781bd20234a06710b92d540baba" title="The initialization routine of the driver.">DriverEntry</a>(<a name="l00392"></a>00392     IN PDRIVER_OBJECT DriverObject,<a name="l00393"></a>00393     IN PUNICODE_STRING RegistryPath<a name="l00394"></a>00394     );<a name="l00395"></a>00395 <a name="l00405"></a>00405 PWCHAR <a class="code" href="group__NPF__code.html#gfc395636686df00f554efbd2010f73cb" title="Returns the list of the MACs available on the system.">getAdaptersList</a>(VOID);<a name="l00406"></a>00406 <a name="l00413"></a>00413 PKEY_VALUE_PARTIAL_INFORMATION <a class="code" href="group__NPF__code.html#gcf0e32b371eb9283e5cf1de0dfb15629" title="Returns the MACs that bind to TCP/IP.">getTcpBindings</a>(VOID);<a name="l00414"></a>00414 <a name="l00425"></a>00425 BOOLEAN <a class="code" href="group__NPF__code.html#g5d152d59c86209c5128ac788a7ae61b3" title="Creates a device for a given MAC.">NPF_CreateDevice</a>(

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -