1.4 packet.dll對應的函數接口 1.4.1 關鍵結構體_ADAPTER_INFO結構體_ADAPTER_INFO包含了系統上所安裝適配器的可理解信息,包含用戶所需的所有附加信息。該結構體的定義如下:typedef struct _ADAPTER_INFO { struct _ADAPTER_INFO *Next; //指向鏈表中的下一個節點 CHAR Name[ADAPTER_NAME_LENGTH + 1]; //描述該適配器的名字 CHAR Description[ADAPTER_DESC_LENGTH + 1]; //適配器可理解的描述 UINT MacAddressLen; //鏈路層地址的長度 UCHAR MacAddress[MAX_MAC_ADDR_LENGTH]; //鏈路層地址 NetType LinkLayer; //適配器的物理特性。該NetType結構體//包含了該適配器得鏈路類型與速度 PNPF_IF_ADDRESS_ITEM pNetworkAddresses;//指向一個網絡地址鏈表,//每一個節點描述該適配器的所有網絡地址 UINT Flags; //適配器標識。使用Netmon API或dagc API,//告訴該適配器是否用不同的方式對待。}ADAPTER_INFO, *PADAPTER_INFO; 在packetNtx/Dll/AdInfo.c文件中聲明瞭下列兩個全局變量:PADAPTER_INFO g_AdaptersInfoList = NULL; HANDLE g_AdaptersInfoMutex = NULL; 其中g_AdaptersInfoList爲全局適配器的鏈表,當應用程序連接packet.dll時創建該鏈表。g_AdaptersInfoMutex是保護g_AdaptersInfoList鏈表的互斥信號。注意,把ADAPTER_INFO 作爲一個參數的API,都假設獲取了該互斥信號後再進行訪問。換句話說,如果哪個API沒有把ADAPTER_INFO 作爲一個參數,那麼對g_AdaptersInfoList的訪問就需要先獲得該互斥信號後再進行訪問。示例代碼如下所示:void PacketPopulateAdaptersInfoList(){ …/**調用者不使用g_AdaptersInfoList作爲參數,*應該獲得g_AdaptersInfoMutex互斥信號,*/ WaitForSingleObject(g_AdaptersInfoMutex, INFINITE); /*訪問g_AdaptersInfoList參數 */ if(g_AdaptersInfoList) { …}…/*釋放g_AdaptersInfoMutex互斥信號*/ ReleaseMutex(g_AdaptersInfoMutex); …} 結構體_NPF_IF_ADDRESS_ITEM包含一個適配器所有網絡地址節點的鏈表。該結構體定義如下:typedef struct _NPF_IF_ADDRESS_ITEM{ npf_if_addr Addr; //網絡地址 struct _NPF_IF_ADDRESS_ITEM *Next; //指向鏈表的下一個節點}NPF_IF_ADDRESS_ITEM, *PNPF_IF_ADDRESS_ITEM; 結構體_NPF_IF_ADDRESS_ITEM中的成員npf_if_addr存儲網絡適配器的網絡地址。函數PacketGetNetInfoEx()使用該結構體,以返回適配器的網絡地址。該結構體定義如下:typedef struct npf_if_addr { struct sockaddr_storage IPAddress; //IP地址 struct sockaddr_storage SubnetMask; //網絡掩碼地址 struct sockaddr_storage Broadcast; //廣播地址}npf_if_addr;
win4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
一文搞懂 Spring 循環依賴
原創
2024-06-06 13:11:47
8個實用的Java Streams API
原創
2024-06-04 21:46:09
記一次疑似JVM內存泄漏的排查過程
原創
2024-06-04 12:09:32
淺析MySQL 8.0直方圖原理
原創
2024-05-27 10:58:41
聊聊Spring中的數據綁定 --- WebDataBinder、ServletRequestDataBinder、WebBindingInitializer 文章源於Ai生成
微學網絡
2024-05-27 10:53:57
分佈式任務調度內的 MySQL 分頁查詢優化
原創
2024-05-24 12:09:18
Java常用的JSON序列化與反序列化工具實踐
原創
2024-05-20 23:55:38
CaffeineCache Api介紹以及與Guava Cache性能對比| 京東物流技術團隊
原創
2024-05-17 23:56:43
有隙可乘 - Android 序列化漏洞分析實戰
原創
2024-05-16 12:09:07
瞭解GaussDB SQL中CASE表達式
原創
2024-05-13 11:31:23
Impala數據文件的碎碎念
原創
2024-05-12 21:38:18
帶你瞭解GaussDB SQL中的BOOLEAN表達式
原創
2024-05-10 11:30:10
Java集合中的Map
原創
2024-05-06 11:34:11
前端面試題 - null是原始類型,但爲什麼typeof null的結果是object?
原創
2024-05-01 23:50:23
24小時熱門文章
-
再談23種設計模式(3):行爲型模式(學習筆記)
-
Power Automate Desktop 安裝完,登錄後老是提示one driver 錯誤
-
微前端學習筆記(4):從微前端到微模塊之EMP與hel-micro方案探索
-
微前端學習筆記(1):微前端總體架構概述,從微服務發微
-
985 碩士程序員,空窗 4 個月沒有 Offer!
-
一文搞懂 Spring 循環依賴
-
賽博鬥地主——使用大語言模型扮演Agent智能體玩牌類遊戲。
-
VScode右鍵打開(添加到右鍵)
-
記一次 .NET某工控視覺自動化系統 卡死分析
-
WindowsServer--SQL Server搭建主從同步實現讀寫分離 - 事務性分發