我在Windows 10(64位)中編寫了一個內核模式驅動程序,其主要目的是從DMA讀取,而且我想知道如果不是將內存塊從內核空間複製到用戶空間中分配的緩衝區,我可以以某種方式將地址暴露給用戶空間(當然不是物理地址),並保存在內存複製操作中。將內核空間虛擬地址映射到Windows 10驅動程序中的用戶空間虛擬地址
也許是這樣的:
分配的連續物理存儲器塊(和在內核空間映射物理地址和虛擬地址)。
將內核空間中的虛擬地址映射到用戶空間中的虛擬地址。
順便說一句,因爲,因爲在系統中運行的進程,只有一個內核空間,並儘可能多的用戶空間(是正確的嗎?),我將不得不使用某種手柄到呼叫過程中,爲了在相應的過程中獲得虛擬地址...
感謝您的時間!
爲什麼不讓內核從一開始就使用用戶空間緩衝區? –
據我所知,如果我在用戶空間分配一個緩衝區,不能保證它在物理內存中是連續的(僅在當前進程的虛擬內存中),而且我需要向設備顯示一個地址位於PCIe插槽上,可以從中開始連續寫入。 – Jones
也許這將是有用的:https://stackoverflow.com/questions/7089735/does-zero-copy-exist-in-windows-osm,雖然表面上看起來像只是處理文件。 – yano