<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計應(yīng)用 > 基于USB的存儲設(shè)備信息安全防護設(shè)計

          基于USB的存儲設(shè)備信息安全防護設(shè)計

          作者: 時間:2009-11-20 來源:網(wǎng)絡(luò) 收藏

            其次是應(yīng)為驅(qū)動程序函數(shù)選擇名字。由于每個驅(qū)動程序中都要包含標準的驅(qū)動程序函數(shù),因此,應(yīng)使用一套區(qū)別于其他驅(qū)動程序的函數(shù)命名機制,由于使程序更容易開發(fā)、調(diào)試和測試。

            此外,還要編寫一個為AddDevice、DispatchPnP、DispatchPower和DispatchCreate函數(shù)設(shè)置入口點的DriverEntry函數(shù),同時要編寫一個完成內(nèi)容的AddDevice函數(shù)。這四個內(nèi)容。第一是調(diào)用IoCreateDevice以創(chuàng)建一個獨立設(shè)備對象:第二是調(diào)用IoAttachDeviceToDeviceStack。以把它自己加入設(shè)備棧,同時填寫PDEVICE_EXTENSION;第三是調(diào)用IoRegisterDeviceInterface,并為它的設(shè)備暴露一個接口,暴露的接口可為訪問該設(shè)備的應(yīng)用程序提供途徑:第四調(diào)用IoSetDevi.ceInterfaceState,以激活它先前注冊的接口。

            至此,過濾設(shè)備就可以在DeviceTree中看到了。

            最后,應(yīng)為IRP_MJ_PNP請求編寫一個基本DispatchPnP函數(shù)。該DispatchPnP函數(shù)必須準備處理具體的PnP IRP,然后為IRP_MJ_POWER編寫一個基本DispatchPower函數(shù),再為IRP_MJ_CREATE請求編寫一個基本Dispatch Create函數(shù),同時攔截相應(yīng)的IRP請求,接著再為I/O控制請求編寫一個基本DispatchDevCtrl函數(shù),以與應(yīng)用程序進行通訊和處理具體的控制請求。

            2單向控制關(guān)鍵技術(shù)分析

            2.1 SCSI命令的分析

            對應(yīng)于不同的過濾功能,其需要攔截的IRP也不相同。要對U盤進行單向控制。就需要攔截所有的寫操作,使U盤成為只讀的。但是,寫U盤的時候,發(fā)送的并不是通常的IRP_MJ_WRITE請求,而是要分析相應(yīng)的SCSI命令,對SCSI命令的取得和操作大致有兩種。

            第一種是得到當前的SCSI命令,其格式為:

            2.2單向控制的實現(xiàn)

            系統(tǒng)進行寫操作時,通常都是先寫在緩存區(qū),然后經(jīng)過一定的延時后,才會寫到真正的磁盤中。所以,當攔截到SCSI命令中的SCSIOP WRITE后,雖然系統(tǒng)不會真正的寫東西到U盤上,但卻要過很久才會提示延時寫錯誤。所以,本文采用了另外一種方法,即用軟件實現(xiàn)“帶寫保護功能”的U盤,其效果與硬件實現(xiàn)的寫保護方式一樣,從而實現(xiàn)了U盤的只讀。其軟件實現(xiàn)方法如下:



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();