LSP資訊檢視

2021-06-07 14:31:52 字數 1322 閱讀 8455

lsp,和spi不是同乙個意思,但多數情況下他們都是指同乙個東東,還不知道lsp是啥東東的先看看下面這段廢話吧。

spi(service provider inte***ce,服務提供者介面)是winsock2提供的一項新特性,通過它可以借助於實現乙個分層服務提供者對現有的傳輸服務提供者進行擴充套件。windows 98以後的作業系統都對spi提供了很好的支援,因此spi有著很好的跨平台性和相容性,它無需使用者了解複雜的網路驅動程式編寫細節,無需考慮api hook、程序注入等技術細節,它一旦安裝,作業系統會自行載入,而所有基於winsock實現的應用程式都會受到影響。相對來說它對系統造成的開銷比較小,雖然它還有一些不足,但卻是編寫輕量級網路攔截程式的最好方案。

winsock2 spi允許使用者提供兩種不同型別的服務提供者:傳輸者(transport)和命名空間(namespace),而且又同時支援使用者開發兩種型別的傳輸服務提供者:基礎服務提供者和分層服務提供者。我們一般編寫的是分層服務提供者(layered transport provider,lsp)。 winsock2傳輸服務提供者是通過標準的windows動態鏈結庫實現的,在這個動態鏈結庫中必須實現並匯出乙個名為wspstartup的函式,在這個函式中會給出其他wsp函式的入口位址分派表。

簡單地說,只要將我們編寫的lsp dll安裝到系統網路協議鏈中,所有基於winsock實現的程式都會載入我們的lsp dll,而在我們的dll中匯出了wsp系列函式,這些函式對應著常見的wsa系列函式。例如,如果我們匯出了wspsend函式,則只要基於winsock的應用程式只要呼叫了send或wsasend函式,它們都要首先經過我們的wspsend處理,我們可以根據喜好將其丟棄,或者將其做適當處理後遞交給協議鏈的下乙個結點,當然,也可以不做任何處理直接遞交給協議鏈的下乙個結點。

不想廢話了,直接貼如何列舉系統lsp資訊的**吧:

void cdlglsp::run()}

// 輔助函式

lpwsaprotocol_infow cdlglsp::getprovider(lpint lpntotalprotocols)

// 申請緩衝區,再次呼叫wscenumprotocols函式

pprotoinfo = (lpwsaprotocol_infow)::globalalloc(gptr, dwsize);

*lpntotalprotocols = ::wscenumprotocols(null, pprotoinfo, &dwsize, &nerror);

return pprotoinfo;}

void cdlglsp::freeprovider(lpwsaprotocol_infow pprotoinfo)

LSP知識彙總

lsp全稱為黎克特制 liskov 替代原則 liskov substitution principle 是物件導向最重要的幾大原則之一。1,行為子型別 其含義是 子型別可以增加方法,但不可刪 子型別需要實現抽象型別中的所有未實現方法 子型別中重寫 override 的方法 必須有相同或子型別的返回...

linux cpu 資訊檢視

cat proc cpuinfo中的資訊 1 檢視物理cpu的個數 cat proc cpuinfo grep physical id sort uniq wc l 2 檢視邏輯cpu的個數 cat proc cpuinfo grep processor wc l 3 檢視cpu是幾核 cat pr...

檢視CPU資訊

cpu總核數 物理cpu個數 每顆物理cpu的核數 總邏輯cpu數 物理cpu個數 每顆物理cpu的核數 超執行緒數 檢視cpu資訊 型號 root aaa cat proc cpuinfo grep name cut f2 d uniq c 24 intel r xeon r cpu e5 263...