當前位置:首頁 » 凈水方式 » 過濾驅動ndis

過濾驅動ndis

發布時間: 2021-03-12 21:25:24

A. 卡巴的網路驅動級過濾程序kaspersky Anti-Virus NDIS Filter可以禁用嗎

如果想禁用不如直接只安裝卡巴的文件反病毒部分和主動防禦,這兩個是不需要網路驅動級過濾程序kaspersky Anti-Virus NDIS Filter的

B. U盤過濾驅動如何禁用U盤

在Windows資源管理器中,進入到「系統盤:\WINDOWS\inf」目錄,找到名為「Usbstor.pnf」的文件,右鍵點擊該文專件,在彈出菜單屬中選擇「屬性」,然後切換到「安全」標簽頁,在「組或用戶名稱」框中選中要禁止的用戶組,接著在用戶組的許可權框中,選中「完全控制」後面的「拒絕」復選框,最後點擊「確定」按鈕。
再使用以上方法,找到「usbstor.inf」文件並在安全標簽頁中設置為拒絕該組的用戶訪問,其操作過程同上。完成了以上設置後,該組中的用戶就無法安裝USB設備驅動程序了,這樣就達到禁用的目的。

C. 什麼是過濾驅動

過濾驅動就是掛載在其他驅動上,對某設備的irp進行攔截過濾作用,可以對設備進行功能版擴展,或是數據加權密等的驅動程序。

比如:

1. 可以對寫入硬碟的數據做加密,然後讀取的時候解密,這樣對於用戶來說,根本不知道有加密解密的過程,然後存在硬碟上的數據是加密的。

2. 可以對已有驅動做一些擴展,或者改變已有驅動的功能。比如已有驅動一次只能寫1024位元組的數據,那麼過濾驅動可以擴展到任何長度,然後分段調用已有驅動就是了。



過濾驅動可以在功能型驅動的上面,稱之為上層過濾驅動,或者高層,反正就這個意思。過濾驅動在功能型驅動下面,稱之為下層過濾驅動。看示意圖:

D. 求助:ndis驅動問題

下載一個「驅動精靈」,然後在裡面檢測一下看看缺少哪些驅動,點擊安裝即可

E. 如何構造一個簡單的USB過濾驅動程序

一、基本原理 我們知道,WDM(和KDM)是分層的,在構造設備棧時,IO管理器可以使一個設備對象專附加到屬另外一個初始驅動程序創建的設備對象上。與初始設備對象相關的驅動程序決定的IRP,也將被發送到附加的設備對象相關的驅動程序上。

F. 如何把ndis filter框架利用到日膚indows驅動開發工作中

NDIS Filter NET_BUFFER_LIST NET_BUFFER MDL

1

網路數據結構如下圖:

5

第二種方法:

/*******************************************************************GetNetBufferData函數的功能:從1個NET_BUFFER裡面獲取數據。1個NET_BUFFER裡面含有1個或者多個的MDL*******************************************************************/VOIDGetNetBufferData(PNET_BUFFERNetBuffer,PUCHAROutputBuffer,ULONGOutputBufferSize,PULONGOutputBytesCopied){PMDLMdl=NetBuffer->CurrentMdl;*OutputBytesCopied=0;if(NetBuffer->DataLength>OutputBufferSize){#ifDBGDbgPrint("Notenoughoutputbufferspace,in:%d,out:%d ",NetBuffer->DataLength,OutputBufferSize);#endifreturn;}NdisMoveMemory(OutputBuffer,(PUCHAR)MmGetSystemAddressForMdlSafe(Mdl,LowPagePriority)+NetBuffer->CurrentMdlOffset,Mdl->ByteCount-NetBuffer->CurrentMdlOffset);OutputBuffer+=Mdl->ByteCount-NetBuffer->CurrentMdlOffset;*OutputBytesCopied+=Mdl->ByteCount-NetBuffer->CurrentMdlOffset;////循環MDL鏈表,獲取每一個結點的數據,數據被保存到OutputBuffer裡面//OutputBuffer的空間不斷地擴大。//當鏈表不為空,並且OutputBuffer的長度<1個NET_BUFFER的總長度while(((Mdl=Mdl->Next)!=NULL)&&(*OutputBytesCopied<NetBuffer->DataLength)){NdisMoveMemory(OutputBuffer,MmGetSystemAddressForMdlSafe(Mdl,LowPagePriority),Mdl->ByteCount);OutputBuffer+=Mdl->ByteCount;//數據被保存到OutputBuffer裡面*OutputBytesCopied+=Mdl->ByteCount;//OutputBuffer的空間不斷地擴大}if(Mdl!=NULL){NdisMoveMemory(OutputBuffer,MmGetSystemAddressForMdlSafe(Mdl,LowPagePriority),NetBuffer->DataLength);OutputBuffer+=Mdl->ByteCount;*OutputBytesCopied+=Mdl->ByteCount;}#ifDBGDbgPrint("buffercopied:%dbytes ",*OutputBytesCopied);#endif}

6

上面的2種方法,只是獲取數據。而原本NDISFilter框架提供的這4個函數默認的代碼,都沒有做任何操作,沒有實質性質的功能,這4個函數原本默認的代碼,我們都不需要,因為我們的驅動程序需要處理網路數據包。這4個函數分別是:

7

在我們的NDISFilter工程裡面,我們需要修改掉這4個函數的功能,把它們替換成我們所想要的功能。比如,你在發送數據包或者接收數據包的時候,需要實現自己的一些業務邏輯,而不是去使用MicrosoftNDISFilter提供的原始代碼的功能。

8

函數的功能:NDIS調用把發送的結構和數據返還給FilterDriver。NDIS可以收集多次NdisFSendNetBufferLists發送的結構和數據形成一個單鏈表傳遞給。除非到NDIS調用,否則一個發送請求的當前狀態總是未知的。一個過濾驅動是不能在NDIS調用返回結構之前對NET_BUFFER_LIST和其關聯的數據做檢查的。要完成一個發送請求完成後的任何必要的後繼處理。當NDIS調用時,FilterDriver就重新獲地對結構及結構相關資源的所有權。可以在中釋放相關的資源和准備下一個NdisFSendNetBufferLists調用。NDIS總是按照過濾驅動調用NdisFSendNetBufferLists提交的順序傳遞給下層驅動,但是回返的順序則是任意的。FilterDriver可以請求一個回環發送請求,只要把NdisFSendNetBufferLists的SendFlags設置成NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK就行了。NDIS會引發一個包含發送數據的接收包指示。

9

一個FilterDriver應該對自己引發的發送請求保持跟蹤並確保在完成時不調用NdisFSendNetBufferComplete常式。

步驟閱讀

10

FilterSendNetBufferLists函數的功能:NDIS調用一個FilterDriver的FilterSendNetBufferLists常式來過濾上層驅動的發送請求。FilterDriver不能改變其它驅動傳來的NET_BUFFER_LIST結構中的SourceHandle成員的值。它可以過濾數據並發送過濾的數據到下層驅動。

11

對每一個提交到FilterSendNetBufferLists的NDIS_BUFFER_LIST,我們可做下面的操作:

1)可以把緩沖區通過NdisFSendBufferLists傳遞給下層驅動,NDIS保證上下文空間對FilterDriver的有效性。過濾驅動可以在發送前修改緩沖區的內容。可以像處理自己引發的發送請求的緩沖區一樣處理這個緩沖區。2)可以調用拒絕傳遞這個包3)排隊緩沖區內容到本地的供以後處理。例如要在一定超時後處理或要接收到特定包後才處理等。如果支持這種處理方式就要支持取消請求的操作。4)可以拷貝緩沖區並引發一個發送請求。它類似自己引發一個發送請求,但必須先調用NdisFSendNetBufferComplete返回上層驅動的緩沖區。

12

發送請求在驅動棧繼續完成,當一個微埠驅動調用完成一個發送請求時,NDIS會調用微埠

13

在一個發送操作完成後,FilterDriver可以做在FilterSendNetBufferLists中所有修改的相反操作。返回一個NET_BUFFER_LIST結構的單鏈表和發送請求的最終狀態給上層的驅動。當最頂層的FilterMole的被調用完成後NDIS會調用引發發送請求的協議驅動的。如果FilterDriver不提供FilterSendNetBufferLists它還是可以引發一個發送操作的,但它必須提供一個並且不能在這個常式里把這個事件傳遞給上層驅動。

14

一個FilterDriver可以傳遞或過濾一個上層驅動的回環請求,要傳遞一個回環請求,NDIS會設置FilterSendNetBufferLists的SendFlags參數為NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK,FilterDriver在調用NdisFSendNetBufferLists時把這個標記傳給它即可。在回環請求的情況下NDIS會指示一個包含發送數據的接收包。

15

如果一個FilterDriver修改的任何行為不是NDIS提供的標准服務,那麼它應該當自己為NDIS提供相應的服務。例如,如果一個FilterDriver修改了一個硬體地址請求,就必須處理直接到這個新地址回環包。在這種情況下,因為FilterDriver已經更改了地址NDIS是不能提供一個回環服務的。

16

_Use_decl_annotations_VOIDFilterSendNetBufferLists(NDIS_HANDLEFilterMoleContext,PNET_BUFFER_LISTNetBufferLists,NDIS_PORT_NUMBERPortNumber,ULONGSendFlags){PMS_FILTERpFilter=(PMS_FILTER)FilterMoleContext;PNET_BUFFERNetBuffer;UCHARTempBuffer[MAX_BUFFER_SIZE];ULONGBytesCopied;pEthHdrEthernetHeader;pIPHdrIpHeader;#ifDBGDbgPrint(">>>FilterSendNetBufferLists:%p ",NetBufferLists);#endiffor(NetBuffer=NetBufferLists->FirstNetBuffer;NetBuffer!=NULL;NetBuffer=NetBuffer->Next){GetNetBufferData(NetBuffer,TempBuffer,MAX_BUFFER_SIZE,&BytesCopied);if(BytesCopied==0){#ifDBGDbgPrint("Netbuffercatcherror ");#endif}else{EthernetHeader=TempBuffer;if(EthernetHeader->Type==0x0800)//乙太網類型{IpHeader=EthernetHeader+sizeof(EthHdr);//去掉乙太網頭,抓出IP頭#ifDBGDbgPrint("Getippacket ");#endif}}}NdisFSendNetBufferLists(pFilter->FilterHandle,NetBufferLists,PortNumber,SendFlags);}

17

FilterReturnNetBufferLists函數的功能:如果FilterDriver設置了的狀態為NDIS_STATUS_SUCCESS,NDIS通過驅動的FilterReturnNetBufferLists返回指示數據。在這種情況下FilterDriver失去了對NET_BUFFER_LIST的所有權,直到FilterReturnNetBufferLists被調用。FilterDriver調用NdisFIndicateNetBufferLists傳遞接收指示給驅動棧上的上層驅動,如果上層驅動保留了對緩沖區(NET_BUFFER_LIST)的所有權,NDIS會調用FilterDriver的FilterReturnNetBufferLists常式。在FilterReturnNetBufferLists中應該撤消在接收路徑上(如在FilterReciveNetBufferLists中做的一些處理)的操作。當最底層的FilterMole完成對緩沖區(NET_BUFFER_LIST)的處理後,NDIS把緩沖區返回給微埠驅動。如果FilterReceiveNetBufferLists的ReceiveFlags沒有設置NDIS_RECEIVE_FLAGS_RESOURCES標記,FilterDriver調用NdisFReturnNetBufferList返回這個緩沖區數據,如果設置了FilterReceiveNetBufferLists直接返回時就把緩沖區返還給了下層微埠驅動。

步驟閱讀

18

FilterReceiveNetBufferLists函數的功能:FilterDriver調用來指示發送數據。這個函數通過NET_BUFFER_LIST結構給上層驅動指示數據。FilterDriver可以從池中分配這個結構。如果FilterDriver設置了的狀態為NDIS_STATUS_SUCCESS,NDIS通過驅動的FilterReturnNetBufferLists返回指示數據。在這種情況下FilterDriver失去了對NET_BUFFER_LIST的所有權直到FilterReturnNetBufferLists被調用。如果FilterDriver在調用時設置ReceiveFlags為NDIS_RECEIVE_FLAGS_RESOURCES,在函數返回後FilterDriver會立即恢復對NET_BUFFER_LIST的所有權,這時FilterDriver必須立即處理這個NET_BUFFER_LIST的返回,因為NDIS在這種情況下是不會調用FilterReturnNetBufferLists返回NET_BUFFER_LIST結構的。注意:一個FilterDriver應該跟蹤自己引發的接收指示確保它在FilterReturnNetBufferLists中不調用NdisFReturnNetBufferLists。

19

_Use_decl_annotations_(NDIS_HANDLEFilterMoleContext,PNET_BUFFER_LISTNetBufferLists,NDIS_PORT_NUMBERPortNumber,ULONGNumberOfNetBufferLists,ULONGReceiveFlags){PMS_FILTERpFilter=(PMS_FILTER)FilterMoleContext;PNET_BUFFERNetBuffer;UCHARTempBuffer[MAX_BUFFER_SIZE];ULONGBytesCopied;pEthHdrEthernetHeader;pIPHdrIpHeader;#ifDBGDbgPrint(">>>FilterReceiveNetBufferLists:%p ",NetBufferLists,ReceiveFlags,NumberOfNetBufferLists);#endifdo{for(NetBuffer=NetBufferLists->FirstNetBuffer;NetBuffer!=NULL;NetBuffer=NetBuffer->Next){GetNetBufferData(NetBuffer,TempBuffer,MAX_BUFFER_SIZE,&BytesCopied);if(BytesCopied==0){#ifDBGDbgPrint("Netbuffercatcherror ");#endif}else{EthernetHeader=TempBuffer;if(EthernetHeader->Type==0x0800){IpHeader=EthernetHeader+sizeof(EthHdr);#ifDBGDbgPrint("IPpacketexist ");#endif}}}}while(FALSE);

20

調用來指示發送數據。如果FilterDriver設置了的狀態為NDIS_STATUS_SUCCESS,NDIS通過驅動的FilterReturnNetBufferLists返回指示數據。如果FilterDriver設置了的ReceiveFlags值為NDIS_RECEIVE_FLAGS_RESOURCES,那麼在函數返回後FilterDriver會立即恢復對NET_BUFFER_LIST的所有權,這時FilterDriver必須立即處理這個NET_BUFFER_LIST的返回。在這種情況下是不會調用FilterReturnNetBufferLists返回NET_BUFFER_LIST結構的。

G. NDIS中間層驅動能攔截所有數據包么

1.網卡收到的數據包會提交給這個協議。
2.協議可以使用這個網卡發送數據包。

比如TCP/IP這個協議驅動,默認會綁定所有的網卡,此時所有網卡接收到數據都會發給TCP/IP協議驅動。
那麼就算加上一個中間層驅動A,對於網卡來說無非是多一個上層綁定的協議驅動而已。
對於TCP/IP這個協議驅動,是多了一個小埠驅動,多調用一次BINDAdapterHandler。
網卡收到數據應該會發給TCP/IP協議驅動和中間層驅動A啊
TCP/IP協議驅動收到上層的包,可以交給網卡驅動,也可以交給中間層驅動的啊。

H. 如何在NdisFilter驅動中獲得網卡

網卡驅動,可以用驅動人生檢測安裝,或者去網卡官網下載也可以呀

I. 台式電腦開機後顯示"打開usb過濾驅動失敗,請查看設備管理器中,通用

這是裝了抄usb密碼保護軟體,卻沒襲有有效的裝載或設置完善,開機時那個設置過密碼的usb介面中的u盤不見了,造成查找提示。。

卸載軟體,重啟。

如果還恢復不了就是流氓軟體,如果想乾乾凈凈,只有重裝系統。。或者臨時使用360啟動管理,關閉啟動項中這個軟體的啟動運行及服務運行。

J. 文件過濾驅動和磁碟過濾驅動有什麼區別

神馬狗屁老師教的啊

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239