原创 Windows核心編程--線程池內核對象觸發調用函數

如果想註冊一個工作項,等待一個內核對象被觸發的時候去執行,與之前說過的步驟很相似,首先編寫如下原型的函數: VOID CALLBACK KernelObjCallback(PTP_CALLBACK_INSTANCE pInstance,P

原创 Design Pattern之觀察者模式

觀察者模式又叫發佈/訂閱模式,觀察者模式定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新自己。 下面是觀察者模式的結構圖: Subj

原创 Windows核心編程--線程池異步調用

Windows線程池函數允許我們做以下事情: 1、以異步方式來調用一個函數; 2、每隔一段時間調用一個函數; 3、當內核對象觸發的時候調用一個函數; 4、當異步I/O請求完成的時候調用一個函數。 對於線程池,我們從來不需要調用Creat

原创 Design Pattern之適配器模式

適配器模式將一個類的接口轉換成客戶希望的另外一個接口。Adapter模式使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。在使用一個已經存在的類時,如果它的接口,也就是方法和你的要求不同時,就應該考慮用適配器模式。 下面

原创 Design Pattern之狀態模式

狀態模式,當一個對象的內在狀態改變時允許改變其行爲,這個對象看起來像是改變了其類。狀態模式主要解決的是當控制一個對象狀態轉換的條件表達式對於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列當中,可以把複雜的判斷邏輯簡化。當

原创 Design Pattern之外觀模式

外觀模式,爲了系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。 在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,就要考慮在數據訪問層和業務邏輯層、業務邏輯層和

原创 Design Pattern之工廠方法模式

在本文之前,已經介紹過簡單工廠模式,簡單工廠模式只有一個工廠,該工廠負責產生所有的運算類,如果增加一個運算類,不僅需要修改工廠類,還需要修改客戶端類,這違反了設計模式所提倡的開放-封閉原則。本文所說的工廠方法模式就是在之前的簡單工

原创 DLL延遲加載技術

一個延遲載入的DLL是隱式鏈接的,系統一開始不會將該DLL載入,只有當我們的的代碼試圖去引用DLL包含的一個符號時,系統纔會實際載入該DLL。延遲載入DLL在下列情況下非常有用。 如果應用程序使用了多個DLL,那麼它的初始化可能

原创 Windows Dll動態庫隱式鏈接

Dll動態庫隱式鏈接 本文主要介紹以下幾個方面: 構建DLL的步驟 構建可執行的模塊的步驟 隱式鏈接步驟 讓程序運行起來 構建DLL的步驟 1)我們必須創建一個頭文件,在其中包含我們想要的DLL中導出的函數原型、結構以及符號

原创 Design Pattern之原型模式

原型模式,用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。原型模式其實就是從一個對象再創建另外一個可定製的對象,而且不需要知道任何創建的細節。在C++裏,可通過拷貝構造函數實現原型模式,或者實現賦值運算符也能達到相

原创 Design Pattern之模板方法模式

模板方法模式,定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。 AbstractClass實現了一個模板方法,定義了算法的骨架,具體子類將重定義P

原创 Windows核心編程--線程池定時器

Windows提供了可等待的計時器內核對象,它使我們非常容易的得到一個基於時間的通知。創建一個可等待計時器內核對象會浪費系統資源。利用線程池來處理定時任務再合適不過了。 PTP_TIMER CreateThreadpoolTimer( P

原创 DLL顯式載入

之前在文章中提到 過DLL的隱式鏈接,現在介紹以下DLL的顯式載入。DLL顯式載入與隱式鏈接不同的是,我們不需要包含包含DLL導出函數和變量的頭文件,不需要顯式指定lib文件,比如以下兩行代碼就可以去掉了。 #include "u

原创 Design Pattern之策略模式

策略模式(Strategy):它定義了算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 策略模式就是用來封裝算法的,實踐中,我們發現可以用它來封裝幾乎任何類型的規則,只要在分析過程中

原创 Design Pattern之簡單工廠模式

簡單工廠模式顧名思義,就是專門負責生產的,我們需要什麼,就讓其生產什麼。該模式在開發過程中經常會用到,其好處就是在於設計的類能夠達到可維護、可複用、可擴展、靈活性好的目的。 例如,利用C++設計一個加減乘除的小程序,直觀的思維直