CTL_CODE定义中Method的说明
生活随笔
收集整理的這篇文章主要介紹了
CTL_CODE定义中Method的说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我在上一篇中說明CTL_CODE的時候,其中CTL_CODE定義中有一個Method域,該域的功能意義是定義用于與在驅動程序中獲取應用程序數據緩沖區的地址方式。如果你看了我前邊的文章,你可以看到在DeviceIoControl的使用說明中對DeviceIoControl參數進行描述中關于lpInBuffer 和lpOutBuffer 的描述。簡單的說,Method域就是定義了lpInBuffer 和lpOutBuffer 緩沖區在驅動程序中對這兩個緩沖區地址的獲取和數據的操作方式。我們分別進行描述:
- METHOD_BUFFERED
系統分配一個緩沖區用于輸入和輸出,該緩沖區的字節數應該為應用程序的輸入和輸出緩沖區中較大的字節數。驅動程序中通過KIrp::IoctlBuffer獲得緩沖區的地址。對于輸出,驅動程序必須將輸出字節數返回給I.Information(),然后由I/O管理器將數據從系統緩沖區復制到應用程序的緩沖區中。
- METHOD_IN_DIRECT
- METHOD_OUT_DIRECT
在這兩種方式下,輸入緩沖區數據被復制到一個系統緩沖區中,驅動程序可以用KIrp::IoctlBuffer訪問這個緩沖區。輸出緩沖區被類KMemory對象映射,驅動程序可以通過KIrp::Mdl來訪問這個緩沖區。
- METHOD_NEITHER
這個比較特殊,一般不使用。
總結
以上是生活随笔為你收集整理的CTL_CODE定义中Method的说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6000mAh续航怪兽来了 华为畅享50
- 下一篇: 2022全国高考天气地图出炉 这8省区考