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

正文內(nèi)容

同步問(wèn)題ppt(編輯修改稿)

2025-08-28 16:36 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 要知道這個(gè)結(jié)構(gòu)數(shù)組在哪里,內(nèi)核用它來(lái)記錄每個(gè)對(duì)象在等待中的狀態(tài)。 ? 其余參數(shù)與 KeWaitForSingleObject中的對(duì)應(yīng)參數(shù)作用相同 返回值 ? 如果指定了 WaitAll,則返回值 STATUS_SUCCESS表示等待的所有對(duì)象都進(jìn)入了信號(hào)態(tài)。 ? 如果指定了 WaitAny,則返回值在數(shù)值上等于進(jìn)入信號(hào)態(tài)的對(duì)象在 objects數(shù)組中的索引。 ? 如果碰巧有多個(gè)對(duì)象進(jìn)入了信號(hào)態(tài),則返回值僅代表其中的一個(gè),可能是第一個(gè)也可能是其它??梢哉J(rèn)為返回值等于 STATUS_WAIT_0加上數(shù)組索引。 ? 可以先用 NT_SUCCESS測(cè)試返回碼,然后再?gòu)钠渲刑崛?shù)組索引: ? NTSTATUS status = KeWaitForMultipleObjects(...)。 if (NT_SUCCESS(status)) { ULONG iSignalled = (ULONG) status (ULONG) STATUS_WAIT_0。 ... } 內(nèi)核事件 (event) ? 使用:內(nèi)核中經(jīng)常使用,把一個(gè)特定的事件通知給一個(gè)等待中的線程。 ? 下面列出了用于處理內(nèi)核事件的服務(wù)函數(shù)。 KeClearEvent 把事件設(shè)置為非信號(hào)態(tài),不報(bào)告以前的狀態(tài) KeInitializeEvent 初始化事件對(duì)象KeReadStateEvent 取事件的當(dāng)前狀態(tài) KeResetEvent 把事件設(shè)置為非信號(hào)態(tài),返回以前的狀態(tài) KeSetEvent把事件設(shè)置為信號(hào)態(tài),返回以前的狀態(tài) 使用 ? 初始化一個(gè)事件對(duì)象: KeInitializeEvent ? ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL)。 KeInitializeEvent(event, EventType, initialstate)。 ? event是要初始化事件對(duì)象的地址。 EventType是一個(gè)枚舉值,可以為 NotificationEvent或SynchronizationEvent。 ? initialstate是布爾量,為 TRUE表示事件的初始狀態(tài)為信號(hào)態(tài),為 FALSE表示事件的初始狀態(tài)為非信號(hào)態(tài)。 NotificationEvent和SynchronizationEvent ? 通知事件 (notification event)有這樣的特性,當(dāng)它進(jìn)入信號(hào)態(tài)后,它將一直處于信號(hào)態(tài)直到明確地把它重置為非信號(hào)態(tài)。此外,當(dāng)通知事件進(jìn)入信號(hào)態(tài)后,所有在該事件上等待的線程都被釋放。 ? 同步事件 (synchronization event),只要有一個(gè)線程被釋放,該事件就被自動(dòng)重置為非信號(hào)態(tài)。 KeSetEvent ? 調(diào)用 KeSetEvent函數(shù)可以把事件置為信號(hào)態(tài): ASSERT(KeGetCurrentIrql() = DISPATCH_LEVEL)。 LONG wassignalled = KeSetEvent(event, boost, wait)。 ? event參數(shù)指向一個(gè)事件對(duì)象, boost值用于提升等待線程的優(yōu)先級(jí)。 wait參數(shù)指定為 FALSE。如果該事件已經(jīng)處于信號(hào)態(tài),則該函數(shù)返回非 0值。如果該事件處于非信號(hào)態(tài),則該函數(shù)返回 0。 其他函數(shù) ? 調(diào)用 KeReadStateEvent函數(shù) (在任何 IRQL上 )可以測(cè)試事件的當(dāng)前狀態(tài): LONG signalled = KeReadStateEvent(event)。 返回值不為 0代表事件處于信號(hào)態(tài),為 0代表事件處于非信號(hào)態(tài)。 ? 調(diào)用 KeResetEvent函數(shù) (在低于或等于 DISPATCH_LEVEL級(jí) )可以把事件對(duì)象重置為非信號(hào)狀態(tài)并即獲得事件對(duì)象的當(dāng)前狀態(tài) ASSERT(KeGetCurrentIrql() = DISPATCH_LEVEL)。 LONG signalled = KeResetEvent(event)。 其他函數(shù) ? 如果對(duì)事件的上一個(gè)狀態(tài)不感興趣,可以調(diào)用 KeClearEvent函數(shù) ASSERT(KeGetCurrentIrql() = DISPATCH_LEVEL)。 KeClearEvent(event)。 KeClearEvent函數(shù)執(zhí)行得更快,因?yàn)樗蛔x取事件的當(dāng)前狀態(tài)而直接設(shè)置事件為非信號(hào)態(tài)。 內(nèi)核信號(hào)燈 ? 生產(chǎn)者消費(fèi)者問(wèn)題 ? 內(nèi)核信號(hào)燈是一個(gè)有同步語(yǔ)義的 整數(shù)計(jì)數(shù)器 ? 信號(hào)燈計(jì)數(shù)器為正值時(shí)代表信號(hào)態(tài),為 0時(shí)代表非信號(hào)態(tài)。計(jì)數(shù)器不能為負(fù)值。 ? 釋放信號(hào)燈將使信號(hào)燈計(jì)數(shù)器增 1,在一個(gè)信號(hào)燈上等待將使該信號(hào)燈計(jì)數(shù)器減 1。如果計(jì)數(shù)器值被減為 0,則信號(hào)燈進(jìn)入非信號(hào)態(tài),之后其它調(diào)用KeWaitXxx函數(shù)的線程將被阻塞。 ? 注意如果等待線程的個(gè)數(shù)超過(guò)了計(jì)數(shù)器的值,那么并不是所有等待的線程都可以恢復(fù)運(yùn)行。 服務(wù)函數(shù) ? KeInitializeSemaphore 初始化信號(hào)燈對(duì)象 ? KeReadStateSemaphore 取信號(hào)燈當(dāng)前狀態(tài) ? KeReleaseSemaphore 設(shè)置信號(hào)燈對(duì)象為信號(hào)態(tài) KeInitializeSemaphore ? 信號(hào)燈對(duì)象應(yīng)該在 PASSIVE_LEVEL級(jí)上初始化: ? ASSERT(KeGetCurrentIrql() == PASSIVE_LEVEL)。 KeInitializeSemaphore(semaphore, count, limit)。 ? semaphore參數(shù)指向一個(gè)在非分頁(yè)內(nèi)存中的KSEMAPHORE對(duì)象。 count是信號(hào)燈計(jì)數(shù)器的初始值, limit是計(jì)數(shù)器能達(dá)到的最大值,它必須為正數(shù),且比 count大 KeReleaseSemaphore ? 可以調(diào)用 KeReleaseSemaphore函數(shù)釋放信號(hào)燈: ? ASSERT(KeGetCurrentIrql() = DISPATCH_LEVEL)。 LONG wassignalled = KeReleaseSemaphore(semaphore, boost, delta, wait)。 ? 該函數(shù)把 delta值加到 semaphore指向的信號(hào)燈計(jì)數(shù)器上,這將把信號(hào)燈帶入信號(hào)態(tài),并使等待線程釋放 。返回值為 0代表信號(hào)燈的前一個(gè)狀態(tài)是非信號(hào)態(tài),非 0代表信號(hào)燈的前一個(gè)狀態(tài)為信號(hào)態(tài)。 ? boost和 wait參數(shù)與在 KeSetEvent函數(shù)中的作用相同 ? KeReleaseSemaphore不允許把計(jì)數(shù)器的值增加到超過(guò) limit指定的值。如果這樣做,該函數(shù)根本就不調(diào)整計(jì)數(shù)器的值,它將產(chǎn)生一個(gè)代碼為STATUS_SEMAPHORE_LIMIT_EXCEEDED的異常。除非系統(tǒng)中存在捕獲該異常的處理程序,否則將導(dǎo)致一個(gè) bug check。 KeReadStateSemaphore ? 讀取信號(hào)燈的狀態(tài)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1