日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

窗口与线程的关系

發(fā)布時間:2025/3/21 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 窗口与线程的关系 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 能產(chǎn)生消息的四種情況
    • 消息到哪里去
    • 如何通過窗口找到消息隊(duì)列呢?
    • 窗口在哪?
    • 窗口對象
    • 子窗口控件:
    • Windows把窗口對象放在0環(huán),那么我們?nèi)绾稳ゲ僮鞔翱谀?#xff1f;
    • 總結(jié):

能產(chǎn)生消息的四種情況

  • 鼠標(biāo)
  • 鍵盤
  • 其它的應(yīng)用程序(其它進(jìn)程送過SendMessage發(fā)送消息)
  • 操作系統(tǒng)的內(nèi)核程序
  • 消息到哪里去


    當(dāng)鼠標(biāo)點(diǎn)擊按鈕時,那么這個消息就會去這個窗口所對應(yīng)線程的消息隊(duì)列,w32k.sys中開啟了兩個線程監(jiān)聽鼠標(biāo)和鍵盤

    這就是為什么程序卡死之后,鼠標(biāo)還能動的原因。因?yàn)?strong>鼠標(biāo)的監(jiān)控是在0環(huán)的一個線程,和程序無關(guān)。

    如何通過窗口找到消息隊(duì)列呢?

    首先我們得了解窗口實(shí)際是在哪?所以需要近一步往下了解

    窗口在哪?


    用IDA看user32.dll中的CreateWindow,跟蹤到3環(huán)的最后一步,然后就進(jìn)入了0環(huán),進(jìn)行下一步操作。

    也就說是:
    CreateWindow畫窗口,進(jìn)入0環(huán),大于1000進(jìn)入的就是W32k.sys這個模塊,小于1000進(jìn)入的就是讓ntosKernel這個模塊,關(guān)于窗口的一切詳細(xì)信息全在0環(huán)中

    窗口對象

    _WINDOW_OBJECT(0環(huán)結(jié)構(gòu)體)的結(jié)構(gòu):
    ……
    PTHREADINFO pti;//所屬線程
    ……

    PTHREADINFO pti表示當(dāng)前這個窗口指向哪個線程

    這里不止一個窗口,包括那些按鈕,也屬于窗口,也就是說這里有十多個窗口,這些窗口都屬于一個線程。(這些按鈕就是子窗口控件

    子窗口控件:

    1.WINDOWS提供了幾個預(yù)定義的窗口類以方便我們的使用,我們一般把它們叫做子窗口控件,簡稱控件

    2.控件會自己處理消息,并在自己狀態(tài)發(fā)生狀態(tài)改變時通知父窗口

    3.預(yù)定義的控件有:按鈕,復(fù)選框,編輯框,靜態(tài)字符串標(biāo)簽和滾動條

    窗口對象中還有一個重要成員是Wnd

    這里面有一些重要信息:當(dāng)前窗口什么風(fēng)格,父窗口,子窗口這些,以及窗口過程等。

    Windows把窗口,畫窗口,消息處理全部放在0環(huán)(關(guān)于窗口的數(shù)據(jù)問題都在0環(huán))。不需要考慮線程通信問題。

    Windows把窗口對象放在0環(huán),那么我們?nèi)绾稳ゲ僮鞔翱谀?#xff1f;

    在0環(huán)的對象,不可能把實(shí)際地址直接告訴我們,因?yàn)?環(huán)一旦出錯,直接藍(lán)屏。所以它跟那些進(jìn)程對象和線程對象有相同的地方,但是也有不同的地方。

    相同的地方:對窗口對象進(jìn)行操作時,使用0環(huán)返回來的一個窗口句柄值(也就是一個實(shí)際內(nèi)核對象地址的一個索引值),也就是說,窗口在零環(huán)也有個句柄表

    不同的地方:這個句柄表是全局的,拿到窗口的句柄值都一樣,而且都有效。

    總結(jié):

  • 窗口是在0環(huán)創(chuàng)建的
  • 窗口句柄是全局的
  • 一個線程可以用多個窗口,但每個窗口只能屬于一個線程
  • 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的窗口与线程的关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。