freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

wdm驅(qū)動(dòng)程序設(shè)計(jì)-文庫吧

2025-07-02 18:52 本頁面


【正文】 EVEL級上運(yùn)行。 如何使用自旋鎖 ? 首先,在 非分頁內(nèi)存 中為一個(gè) KSPIN_LOCK對象分配存儲空間。然后調(diào)用 KeInitializeSpinLock初始化這個(gè)對象。 typedef struct _DEVICE_EXTENSION { ... KSPIN_LOCK QLock。 } DEVICE_EXTENSION, *PDEVICE_EXTENSION。 NTSTATUS AddDevice(...) { PDEVICE_EXTENSION pdx = ...。 KeInitializeSpinLock(amp。pdxQLock)。 ... } 如何使用自旋鎖 ? 當(dāng)代碼運(yùn)行在低于或等于 DISPATCH_LEVEL級時(shí)獲取這個(gè)鎖,并執(zhí)行需要保護(hù)的代碼,最后釋放自旋鎖。 NTSTATUS DispatchSomething(...) { KIRQL oldirql。 PDEVICE_EXTENSION pdx = ...。 KeAcquireSpinLock(amp。pdxQLock, amp。oldirql)。 ... KeReleaseSpinLock(amp。pdxQLock, oldirql)。 } 如何使用自旋鎖 ? 如果知道代碼已經(jīng)處在 DISPATCH_LEVEL級上 ,如 DPC、StartIo,和其它執(zhí)行在 DISPATCH_LEVEL級上的驅(qū)動(dòng)程序例程,可以調(diào)用兩個(gè)專用函數(shù)來操作自旋鎖 : KeAcquireSpinLockAtDpcLevel(amp。pdxQLock)。 ... KeReleaseSpinLockFromDpcLevel(amp。pdxQLock)。 內(nèi)核同步對象 ? 利用內(nèi)核同步對象可以暫時(shí)阻塞一個(gè)線程的執(zhí)行,同步不同線程的執(zhí)行動(dòng)作。 ? 內(nèi)核同步對象僅影響 OS線程調(diào)度器的調(diào)度動(dòng)作,因此一般只在低于 DISPATCH_LEVEL級的代碼中用于阻塞線程。 ? 在驅(qū)動(dòng)程序中,只能在“ 非任意線程上下文 ”條件下利用內(nèi)核同步對象阻塞調(diào)用者的線程或產(chǎn)生該請求的線程。 ? 在“ 任意線程上下文 ”調(diào)用 等待原語 只會(huì)阻塞一個(gè)“無辜”的線程。 非任意線程上下文 ? 如果驅(qū)動(dòng)程序的回調(diào)例程能確切知道處于哪個(gè)線程上下文中,則稱處于“非任意線程上下文”;大部分時(shí)間里,驅(qū)動(dòng)程序無法知道這個(gè)事實(shí),即處于“任意線程上下文”中。 ? 非任意線程上下文的例子: 1. 設(shè)備的最高級驅(qū)動(dòng)程序的 IRP處理函數(shù)可以確切地知道它執(zhí)行在發(fā)出該 I/O請求的應(yīng)用程序線程的上下文中。 2. PNP類 IRP的處理函數(shù)可以確切地知道它執(zhí)行在一個(gè)系統(tǒng)線程 (System Thread)中。 3. 在你自己創(chuàng)建的內(nèi)核模式系統(tǒng)線程中。 (PsCreateSystemThread) 4. DriverEntry、 AddDevice、 DriverUnload等函數(shù)執(zhí)行在一個(gè)系統(tǒng)線程 (System Thread)中。 常用的內(nèi)核同步對象 對象 數(shù)據(jù)類型 描述 Event(事件 ) KEVENT 阻塞一個(gè)線程直到檢測到某事件發(fā)生 Semaphore(信號燈 ) KSEMAPHORE 控制多個(gè)線程對共享資源的訪問 Mutex(互斥 ) KMUTEX 執(zhí)行到關(guān)鍵代碼段時(shí),禁止其它線程執(zhí)行該代碼段 Timer(定時(shí)器 ) KTIMER 推遲線程執(zhí)行一段時(shí)期 Thread(線程 ) KTHREAD 阻塞一個(gè)線程直到另一個(gè)線程結(jié)束 在單同步對象上等待 ? 在任何時(shí)刻,任何對象都處于兩種狀態(tài)中的一種: 信號態(tài)(signaled)或 非信號態(tài) (not signaled) 。 ? 調(diào)用 KeWaitForSingleObject或 KeWaitForMultipleObjects函數(shù)可以使代碼 (以及背景線程 )在一個(gè)或多個(gè)同步對象上等待,等待它們進(jìn)入信號態(tài)。 ASSERT(KeGetCurrentIrql() = DISPATCH_LEVEL)。 LARGE_INTEGER timeout。 NTSTATUS status = KeWaitForSingleObject(object, WaitReason, WaitMode, Alertable, amp。timeout)。 KeWaitForSingleObject參數(shù)含義 ? object 指向要等待的對象,它應(yīng)該指向一個(gè)上面表中列出的同步對象。該對象必須在非分頁內(nèi)存中 。 ? WaitReason 是一個(gè)純粹建議性的值, KWAIT_REASON枚舉型,一般取值為 Executive。 ? WaitMode 是 MODE枚舉類型,該枚舉類型僅有兩個(gè)值:KernelMode和 UserMode。一般取值為 KernelMode 。 ? Alertable 參數(shù)一般指定為 FALSE。 ? timeout 是一個(gè) 64位超時(shí)值的地址,單位為 100納秒。正數(shù)的超時(shí)表示一個(gè)從 1601年 1月 1日 起的絕對時(shí)間。負(fù)數(shù)代表相對于當(dāng)前時(shí)間的
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1