幾句話概括atl thunk技術
ATL的thunk技術過一段時間不看就忘記他是怎麼實現的,現在概括為幾句話,方便記憶.
CreateWindow時,第一個callback是在同一個堆疊裡的,不是非同步的.所以可以得到視窗對應的類的this指標.後續的callback則是非同步的,得不到對應的視窗物件指標.怎麼辦呢,這時就用到thunk技術.
thunk就是在資料段模擬了一個WNDPROC的結構,但中間做了手腳,用 this指標替換了WNDPROC的HWND引數.然後把這個WNDPROC設成callback的視窗過程.
順便說一句,vc6時是在棧上模擬這個callback函式的,所以會有windows資料執行保護的問題,vc2003後則是在堆上模擬的,不會有這個問題. 想在 vc6上解決這個問題可以修改atl的原始碼,把thunk這段記憶體置為可執行許可權.
相關推薦
幾句話概括atl thunk技術
ATL的thunk技術過一段時間不看就忘記他是怎麼實現的,現在概括為幾句話,方便記憶. CreateWindow時,第一個callback是在同一個堆疊裡的,不是非同步的.所以可以得到視窗對應的類的this指標.後續的callback則是非同步的,得不到對應的視窗物件指標.怎麼辦呢,這時就用到thunk技術
幾句話搞懂URI、URL、URN之間的關系
source span tor strong 命名 ide 資源定位 定義 之間 1、URI,是uniform resource identifier,統一資源標識符,用來唯一的標識一個資源。 2、RL是uniform resource locator,統一資源定位器,它是
Python之禪中的幾句話--傳說中的蛇宗總綱
也不能 cit 美的 AC com utc 不能 beats 命名空間 Simple is better than complex. 簡潔勝於復雜。 Now is better than never. Although never is often better than
幾句話了解Zookeeper工作原理
思想 觀察者 返回結果 一輪 編號 設置 兩個 規範 創建 1、Zookeeper的角色 領導者(leader),負責進行投票的發起和決議,更新系統狀態。 學習者(learner),包括跟隨者(follower)和觀察者(observer),follower用於接受客戶端請
夠用一輩子的幾句話
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
幾句話聊聊我們公司的“加班文化”
今天週六,不出意外又加班了,閒來無事,分析一下我們的加班文化,純屬個人見解。 我們的加班有幾個特點: 1、師出無名,政策就是不分情況一律加班,可能個別模組確實緊急,需要加班趕進度,但是也有人手腳麻利,bug都已經清完了,也得一起加班。 2、在第1條的基礎下,我們的加班是長期持續性的“說好三年,過了三年又
幾句話讀懂動態規劃:動態規劃與數學歸納法
昨天晚上 今天凌晨在寫動態規劃的練習題 從兩點折騰到四點一連折騰了兩個小時有看了一會參考書還是沒有搞明白。 整什麼無向圖啊路徑啊一點也不新手友好。 但後來慢慢的看了看題目和原始碼,今天下午突然反應過來: 這不就是數學歸納法麼 跟大家分享一下。 首先,我們來回顧一下數學歸納法:
幾句話闡述清楚log4j、slf4j、logback、tinylog之間的區別
1.早期,jdk不提供日誌功能,所以程式設計師要想輸出相關資訊,基本上都使用 System.out.println( ); 2.在這個背景下,一位偉大的程式設計師,暫且稱呼為 偉員, 設計了一套系統的日誌功能程式碼,也就是log4j,廣受程式設計師歡迎 3.在這之後,log4j表示jdk可以
身為程式設計師的你是不是經常說這幾句話呢?
1.還不行嗎,你用的什麼瀏覽器,版本多少? 2.重啟試試,強刷試試,清快取試試,其它瀏覽器呢! 3.介面掛了吧,抓包了嗎? 4.在我電腦上是好的… 5.見鬼了,昨天還好好的 6.只改了一行程式碼,不會影響其它程式的。 7.剛剛那個bug,我這裡沒出現,不信你看….(其實自
幾句話總結核心中的鎖
原子操作(atomic): 通過在彙編操作碼字首加個lock(0xf0)來給記憶體總線上鎖(其他CPU無法訪問這個記憶體單元),直到這條指令完成。atomic_t型別為volatile int。 自旋鎖(spinlock/spinlock_irqsave):
javascript 幾句話快速找出字串內指定字元的下標。
今天在和朋友討論如何快速找出字串內指定字元的下標 於是就出現了下面的寫法: 寫法1 var str ="this is javascript" var resault ={index:"",count:0}; while ( true ){ var index =
寫給未來的自己幾句話
今後在這裡每天記錄我的讀書筆記,怎樣的筆記才是好筆記了?筆記就是記錄自己學習的過程。好的筆記具備一定的參考價值,不好的記錄也是有意與我今後的學習和思考。 未來少說多做,腳踏實地的走。 下面是我自己寫給未來的十句話 1.求職過程中要自信,要準備好,要麼你做過這個行業,要
STM32中的最後面幾句話的意思
/* Uncomment the line below to expanse the “assert_param” macro in the Standard Peripheral Library drivers code */ /* #define USE
給年輕程式設計師的幾句話
我收到了不少新手的來信,他們都希望能成長為一名真正的程式設計師。我絕對不是第一個談論這個話題的人,所以,我不知道應該做哪方面的補充。不管怎樣,下面的是一些一直記在我心頭的、有必要讀一下的建議: 找其他開發人員合作開發。我們正處在科技歷史上第一個絕好的時代,你幾乎不用在意在
ATL之thunk技術
由於 C++ 成員函式的呼叫機制問題,對C語言回撥函式的 C++ 封裝是件比較棘手的事。為了保持C++物件的獨立性,理想情況是將回調函式設定到成員函式,而一般的回撥函式格式通常是普通的C函式,尤其是 Windows API 中的。好在有些回撥函式中留出了一個額外引數,這樣便
MySQL 只能做小專案?鬆哥要說幾句公道話!
鬆哥上學那會,很多人對 MySQL 有一些偏見,偏見主要集中在以下幾方面: MySQL 不支援事務(事實上 MyISAM 有表鎖,但是效率比較低) MySQL 儲存的資料量比較小,適合小專案,大專案還是得上 Oracle、DB2 等 這麼多年過去了,鬆哥自己在開發中一直是以 MySQL 為主,我覺得我有必
【C語言程序】讓用戶輸入一句話,輸出這句話中每個單詞含有多少個字母
get mage 一句話 printf png es2017 urn bsp can #include <stdio.h>#define N 100 //宏定義,用N表示100 int main(int argc, char *argv[]) { int i
Python-關於豆瓣發布“說句話”,添加網頁等的js行為分析
方法 blog 為我 png lin 註意點 douban tom line 想做個利用Python發布豆瓣“說句話”的工具,目前我已知的有兩種方法: 用Python驅動一些無界面瀏覽器phantomjs(因為我沒用Chrome),直接模擬發狀態的行為。 按F12分析網頁
c語言中 srand(time(NULL)); 這句話是什麽意思(尤其是 NULL)
什麽 返回值 產生 con 現在時間 完成 時間 一個 div 這是兩個函數! srand函數 一個是srand函數!這是在調用rand()這個函數之前使用的!rand()是一個產生隨機數的函數!而srand是一個設置隨機數種子的函數!通常這兩個函數是一起使用的!來完成
用shell打印下面這句話中字母數小於6的單詞
cte shel bsp 打印 單詞 ret nbsp 答案 ets Bash also interprets a number of multi-character options答案:#! /bin/bashfor i in bash also interprets a