📄 wscontrol.html
字号:
<strong>if</strong> <font color="4444FF">(</font><font color="4444FF">!</font><font color="#2040a0">WsControl</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"GetProcAddress failed for WsControl (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">GetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">WSAGetLastError1</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">WSAGetLastErrorProc</font><font color="4444FF">)</font> <font color="#2040a0">GetProcAddress</font><font color="4444FF">(</font><font color="#2040a0">hModule</font>, <font color="#008000">"WSAGetLastError"</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="4444FF">!</font><font color="#2040a0">WSAGetLastError1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"GetProcAddress failed for WSAGetLastError (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">GetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">WSAStartup1</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">WSAStartupProc</font><font color="4444FF">)</font> <font color="#2040a0">GetProcAddress</font><font color="4444FF">(</font><font color="#2040a0">hModule</font>, <font color="#008000">"WSAStartup"</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="4444FF">!</font><font color="#2040a0">WSAStartup1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"GetProcAddress failed for WSAStartup (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">GetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">WSACleanup1</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">WSACleanupProc</font><font color="4444FF">)</font> <font color="#2040a0">GetProcAddress</font><font color="4444FF">(</font><font color="#2040a0">hModule</font>, <font color="#008000">"WSACleanup"</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="4444FF">!</font><font color="#2040a0">WSACleanup1</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"GetProcAddress failed for WSACleanup (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">GetLastError</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">result</font> <font color="4444FF">=</font> <font color="#2040a0">WSAStartup1</font><font color="4444FF">(</font><font color="#2040a0">MAKEWORD</font><font color="4444FF">(</font><font color="#FF0000">1</font>, <font color="#FF0000">1</font><font color="4444FF">)</font>, <font color="4444FF">&</font><font color="#2040a0">WSAData</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">result</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"WSAStartup failed (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">result</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#2040a0">TCP_REQUEST_QUERY_INFORMATION_EX</font> <font color="#2040a0">tcpRequestQueryInfoEx</font><font color="4444FF">;</font> <font color="#2040a0">memset</font><font color="4444FF">(</font><font color="4444FF">&</font><font color="#2040a0">tcpRequestQueryInfoEx</font>, <font color="#FF0000">0</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">tcpRequestQueryInfoEx</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_entity</font>.<font color="#2040a0">tei_entity</font> <font color="4444FF">=</font> <font color="#2040a0">GENERIC_ENTITY</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_entity</font>.<font color="#2040a0">tei_instance</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_class</font> <font color="4444FF">=</font> <font color="#2040a0">INFO_CLASS_GENERIC</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_type</font> <font color="4444FF">=</font> <font color="#2040a0">INFO_TYPE_PROVIDER</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_id</font> <font color="4444FF">=</font> <font color="#2040a0">ENTITY_LIST_ID</font><font color="4444FF">;</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">tcpRequestBufSize</font> <font color="4444FF">=</font> <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">tcpRequestQueryInfoEx</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#444444">//this probably allocates too much space; not sure if MAX_TDI_ENTITIES</font> <font color="#444444">//represents the max number of entities that can be returned or, if it</font> <font color="#444444">//is the highest entity value that can be defined.</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">entityIdsBufSize</font> <font color="4444FF">=</font> <font color="#2040a0">MAX_TDI_ENTITIES</font> <font color="4444FF">*</font> <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">TDIEntityID</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">TDIEntityID</font> <font color="4444FF">*</font><font color="#2040a0">entityIds</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">TDIEntityID</font> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="#2040a0">calloc</font><font color="4444FF">(</font><font color="#2040a0">entityIdsBufSize</font>, <font color="#FF0000">1</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">result</font> <font color="4444FF">=</font> <font color="#2040a0">WsControl</font><font color="4444FF">(</font><font color="#2040a0">IPPROTO_TCP</font>, <font color="#2040a0">WSCTL_TCP_QUERY_INFORMATION</font>, <font color="4444FF">&</font><font color="#2040a0">tcpRequestQueryInfoEx</font>, <font color="4444FF">&</font><font color="#2040a0">tcpRequestBufSize</font>, <font color="#2040a0">entityIds</font>, <font color="4444FF">&</font><font color="#2040a0">entityIdsBufSize</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">result</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"%s(%d) WsControl failed (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">__FILE__</font>, <font color="#2040a0">__LINE__</font>, <font color="#2040a0">WSAGetLastError1</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">WSACleanup1</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <font color="#444444">//...after the call we compute:</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">entityCount</font> <font color="4444FF">=</font> <font color="#2040a0">entityIdsBufSize</font> / <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">TDIEntityID</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">i</font><font color="4444FF">;</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">ifCount</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#444444">//print out the interface info for the generic interfaces</font> <strong>for</strong> <font color="4444FF">(</font><font color="#2040a0">i</font> <font color="4444FF">=</font> <font color="#FF0000">0</font><font color="4444FF">;</font> <font color="#2040a0">i</font> <font color="4444FF"><</font> <font color="#2040a0">entityCount</font><font color="4444FF">;</font> <font color="#2040a0">i</font><font color="4444FF">+</font><font color="4444FF">+</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">entityIds</font><font color="4444FF">[</font><font color="#2040a0">i</font><font color="4444FF">]</font>.<font color="#2040a0">tei_entity</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#2040a0">IF_ENTITY</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="4444FF">+</font><font color="4444FF">+</font><font color="#2040a0">ifCount</font><font color="4444FF">;</font> <font color="#444444">//see if the iterface supports snmp mib-2 info</font> <font color="#2040a0">memset</font><font color="4444FF">(</font><font color="4444FF">&</font><font color="#2040a0">tcpRequestQueryInfoEx</font>, <font color="#FF0000">0</font>, <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">tcpRequestQueryInfoEx</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_entity</font> <font color="4444FF">=</font> <font color="#2040a0">entityIds</font><font color="4444FF">[</font><font color="#2040a0">i</font><font color="4444FF">]</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_class</font> <font color="4444FF">=</font> <font color="#2040a0">INFO_CLASS_GENERIC</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_type</font> <font color="4444FF">=</font> <font color="#2040a0">INFO_TYPE_PROVIDER</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_id</font> <font color="4444FF">=</font> <font color="#2040a0">ENTITY_TYPE_ID</font><font color="4444FF">;</font> <font color="#2040a0">ULONG</font> <font color="#2040a0">entityType</font><font color="4444FF">;</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">entityTypeSize</font> <font color="4444FF">=</font> <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">entityType</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">result</font> <font color="4444FF">=</font> <font color="#2040a0">WsControl</font><font color="4444FF">(</font><font color="#2040a0">IPPROTO_TCP</font>, <font color="#2040a0">WSCTL_TCP_QUERY_INFORMATION</font>, <font color="4444FF">&</font><font color="#2040a0">tcpRequestQueryInfoEx</font>, <font color="4444FF">&</font><font color="#2040a0">tcpRequestBufSize</font>, <font color="4444FF">&</font><font color="#2040a0">entityType</font>, <font color="4444FF">&</font><font color="#2040a0">entityTypeSize</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">result</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#2040a0">fprintf</font><font color="4444FF">(</font><font color="#2040a0">stderr</font>, <font color="#008000">"%s(%d) WsControl failed (%ld)<font color="#77dd77">\n</font>"</font>, <font color="#2040a0">__FILE__</font>, <font color="#2040a0">__LINE__</font>, <font color="#2040a0">WSAGetLastError1</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">WSACleanup1</font><font color="4444FF">(</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">FreeLibrary</font><font color="4444FF">(</font><font color="#2040a0">hModule</font><font color="4444FF">)</font><font color="4444FF">;</font> <strong>return</strong> <font color="#2040a0">EXIT_FAILURE</font><font color="4444FF">;</font> <font color="4444FF"><strong>}</strong></font> <strong>if</strong> <font color="4444FF">(</font><font color="#2040a0">entityType</font> <font color="4444FF">=</font><font color="4444FF">=</font> <font color="#2040a0">IF_MIB</font><font color="4444FF">)</font> <font color="4444FF"><strong>{</strong></font> <font color="#444444">// Supports MIB-2 interface.</font> <font color="#444444">//get snmp mib-2 info</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_class</font> <font color="4444FF">=</font> <font color="#2040a0">INFO_CLASS_PROTOCOL</font><font color="4444FF">;</font> <font color="#2040a0">tcpRequestQueryInfoEx</font>.<font color="#2040a0">ID</font>.<font color="#2040a0">toi_id</font> <font color="4444FF">=</font> <font color="#2040a0">IF_MIB_STATS_ID</font><font color="4444FF">;</font> <font color="#444444">//note: win95 winipcfg use 130 for MAX_IFDESCR_LEN while</font> <font color="#444444">//ddk\src\network\wshsmple\SMPLETCP.H defines it as 256</font> <font color="#444444">//we are trying to dup the winipcfg parameters for now</font> <font color="#2040a0">DWORD</font> <font color="#2040a0">ifEntrySize</font> <font color="4444FF">=</font> <strong>sizeof</strong><font color="4444FF">(</font><font color="#2040a0">IFEntry</font><font color="4444FF">)</font> <font color="4444FF">+</font> <font color="#FF0000">128</font> <font color="4444FF">+</font> <font color="#FF0000">1</font><font color="4444FF">;</font> <font color="#2040a0">IFEntry</font> <font color="4444FF">*</font><font color="#2040a0">ifEntry</font> <font color="4444FF">=</font> <font color="4444FF">(</font><font color="#2040a0">IFEntry</font> <font color="4444FF">*</font><font color="4444FF">)</font> <font color="#2040a0">calloc</font><font color="4444FF">(</font><font color="#2040a0">ifEntrySize</font>, <font color="#FF0000">1</font><font color="4444FF">)</font><font color="4444FF">;</font> <font color="#2040a0">result</font> <font color="4444FF">=</font> <font color="#2040a0">WsControl</font><font color="4444FF">(</font><font color="#2040a0">IPPROTO_TCP</font>, <font color="#2040a0">WSCTL_TCP_QUERY_INFORMATION</font>, <font color="4444FF">&</font><font color="#2040a0">tcpRequestQueryInfoEx</font>,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -