• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運轉,開心的工作
            簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            轉:Windows硬件輸入模型

            Posted on 2010-01-11 23:49 S.l.e!ep.¢% 閱讀(1255) 評論(0)  編輯 收藏 引用 所屬分類: RootKit
            轉:Windows硬件輸入模型



            ------------------------------------

            1.SetForegroundWindow 和 SetActiveWindow的區別?
            ??? SetActiveWindow改變的是一個線程的局部狀態變量,所以這個函數不能夠跨線程調用(也就是說不能夠改變另外一個線程的局部變量),但是改變當前線程的局部變量的操作總是能夠成功的。 SetForegroundWindow,SetWindowPos ,BringWindowToTop三個函數改變的是系統全局的屬性:Foreground Window和Z-order,所以可以跨越線程及其進程,但是由于Windows防止突然的一個窗口跳至屏幕的Foreground,所以背景線程調用 SetForegroundWindow產生的將是任務欄閃爍效果,而BringWindowToTop和SetWindowPos (TOP)在沒有連接到RIT的時候則干脆不起效果。但是需要注意的是SetWindowPos(BOTTOM)還是有效果的(因為不違反Windows 的這個約束)。

            2.RIT,SHIQ工作原理?
            ???? 當操作系統啟動、初始化時會有一個被稱為Raw Input Thread (RIT)的特殊線程被創造出來,同時一個被稱為 System Hardware Input Queue (SHIQ) 的隊列被創造出來,RIT和SHIQ就是專門用來處理鼠標事件和鍵盤事件的。RIT平時都是睡著的,當有hardware input 事件發生時,這些硬件的驅動程序(device driver for the hardware device )將這些硬件事件放到SHIQ中,這樣就喚醒了RIT,RIT從SHIQ中提取事件并把它們翻譯成相應的消息(比如WM_MOUSEMOVE, WM_KEY*等),這些消息然后被送到相應線程的消息隊列中去。做完這些,RIT繼續睡覺,至于怎么判斷到底應該送給那個線程,對鼠標事件和鍵盤事件又區別:對鼠標事件來說,鼠標之光標在哪個窗口內,改鼠標事件就被送給創造這個窗口的線程。對鍵盤事件來說,比較復雜。在任一時間會有一個線程與RIT有聯系,這個線程被稱為foreground thread,簡單的說,這個線程創建的窗口為當前活動窗口(或者被稱為焦點窗口),于是所有的鍵盤消息被送給該線程的消息隊列。當激活另一個窗口時,新的焦點窗口所屬的線程就成了foreground thread ,于是。。。

            3.VIQ 虛假輸入隊列?
            ??? 每個執行的線程都有自己的虛擬輸入隊列(Virtual Input Queue),用來處理來自硬件、處理器(Processor)或操作系統的消息(Message)。這些隊列都是異步的,也就是說,當處理器發送一個消息給另外一個線程的隊列時,發送函數不用等待其他線程處理該消息就可返回,而接收消息的線程可以等到該線程準備好時再訪問并處理接收到的消息。


            4.虛擬輸入隊列和局部輸入狀態分別是什么? (cqf)
            ????? 虛擬輸入隊列見問題3
            ????? 局部輸入狀態:
            ????? Each thread has its own local input state, which is managed inside a thread's THREADINFO structure (discussed in Chapter 26). This input state consists of the thread's virtualized input queue as well as a set of variables. These variables keep track of the following input state management information:
            ????? Keyboard input and window focus information, such as
            ????? Which window has keyboard focus;Which window is active;Which keys are considered pressed down;The state of the caret;
            ????? The variables also keep track of mouse cursor management information, such as
            ????? Which window has mouse capture;The shape of the mouse cursor;The visibility of the mouse cursor;
            久久久这里有精品| 久久精品国产亚洲AV大全| 久久高清一级毛片| 久久午夜免费视频| 99久久无码一区人妻a黑| 91亚洲国产成人久久精品| 久久天天婷婷五月俺也去| 精品熟女少妇av免费久久| 久久国产热这里只有精品| 久久精品中文无码资源站| 成人久久久观看免费毛片| 午夜视频久久久久一区| 久久99热这里只有精品66| 久久精品无码午夜福利理论片 | 久久天天躁狠狠躁夜夜2020一 | 久久精品国产亚洲沈樵| 热RE99久久精品国产66热| 91精品国产乱码久久久久久| 久久久无码精品午夜| 国产AⅤ精品一区二区三区久久| 久久久久亚洲国产| 久久亚洲AV无码西西人体| AAA级久久久精品无码片| 亚洲国产美女精品久久久久∴| 国产精品99久久久久久董美香| 日韩AV无码久久一区二区| 无码任你躁久久久久久| 狠狠人妻久久久久久综合| 久久91综合国产91久久精品| 久久中文字幕人妻熟av女| 久久影院久久香蕉国产线看观看| 麻豆精品久久久一区二区| 久久久久久狠狠丁香| 精品国产91久久久久久久| 成人国内精品久久久久一区| 亚洲精品无码成人片久久| 天堂久久天堂AV色综合| 三上悠亚久久精品| 久久国产一区二区| 99久久伊人精品综合观看| 狠狠色综合网站久久久久久久|