我從一個內核級驅動程序寫入到用戶空間緩衝(從功能的IOControl),我需要確保用戶土地方案/服務將不會覆蓋緩衝區或在驅動程序寫完之前讀取它。Windows內核級別全球臨界區
在Windows上的內核模式驅動程序中是否有一種方法(如果是,有什麼更好的方法)在Windows內核模式驅動程序中輸入一種'全局臨界區',允許驅動程序獲得系統範圍內的獨佔性短時間以便驅動程序可以保證獨佔訪問用戶空間中的緩衝區?
我從一個內核級驅動程序寫入到用戶空間緩衝(從功能的IOControl),我需要確保用戶土地方案/服務將不會覆蓋緩衝區或在驅動程序寫完之前讀取它。Windows內核級別全球臨界區
在Windows上的內核模式驅動程序中是否有一種方法(如果是,有什麼更好的方法)在Windows內核模式驅動程序中輸入一種'全局臨界區',允許驅動程序獲得系統範圍內的獨佔性短時間以便驅動程序可以保證獨佔訪問用戶空間中的緩衝區?
考慮到在意見回覆,實現的一個方法是保持關聯到每個系統處理器的內核模式線程,並在時間提高自己的IRQL到DPC當你寫緩衝區。在DPC IRQL中不允許線程調度,因此用戶模式應用程序將無法控制。
注:這是問題的答案,但基本上我的評論說,你不應該做的同意。您應該重新設計驅動程序,以便在用戶模式緩衝區隨時可能更改的假設下工作。
你想實現什麼?在Windows內核中沒有(導出的)全局鎖。您可以輕鬆使用自旋鎖或互斥/等。在你的內核驅動程序中如果你想要的話。 – Christopher
你能告訴我們你正試圖解決的實際問題嗎?硬件中是否有實時需求? –
我正在寫驅動程序(從IOControl功能)保存在用戶空間中的緩衝區,並且我需要確保用戶程序/服務不會在驅動程序完成之前覆蓋它或讀取它寫信給它。 – Qix