從系統程式的角度來看,本章是是往上延伸至視窗程的開發所需的programming技巧,因此會使用到相關的Windows API.在這些函數中,有兩個被使用的字元集合型態:8位元的ANCII/ANSI字元集合以及16位元的wide/Unicode (Windows NT、2000以及XP)字元集合.在Windows API函數中,被使用的標準MS-Windows資料型態必須被轉換成MASM的資料型態,例如:BOOL (Windows 型態)轉換成BYTE (MASM型態)…等.
32位元的主控台模式(32 bits console mode)外觀和行為很類似16位元的MS-DOS程式設計,兩者的程式都要從標準輸入讀取並寫入到標準輸出中,兩者也都支援自訂命令列參數、文字的顏色。然而32位元主控台程式和DOS程式在底層是不同的,前者在保護模式(Protected Mode)下執行,後者卻是在真實模式(Real address mode)下執行,而且他們使用不同的函式庫:Win 32程式呼叫的函式庫跟圖形模式的視窗應用程式所呼叫的是一樣的,DOS程式則使用BIOS和來自IBM-PC的中斷.以下介紹幾個常用的Win32主控台函數:
圖形模式的視窗應用程式,其程式的主要架構其實是固定不變的,必須宣告一個主視窗類別WNDCLASS,並且填滿其中的資訊,包括:取得目前這個程式的控制碼GetModuleHandle、讀入程式的圖示LoadIcon和滑鼠的游標LoadCursor、登錄程式的主視窗RegisterClass、建立主視窗CreateWindowEx、顯示ShowWindow和更新主視窗UpdateWindow,以及開始一個接受GetMessage和發出訊息DispatchMessage的迴圈.一個應用程式要處理那些訊息則完全由使用自定的副程式(如WinProc)決定,而這個副程式與主視窗類別的鏈結是宣告WINDCLASS第二個參數即設定的.
最後在記憶體管理的部份主要集中在兩個主要的議題:將邏輯位址轉換成線性位址以及將線性位址轉換成實體位址(分頁paging),課本說明其實不夠詳細,可以在網上查詢一下GDTR和LDTR,會更加清楚.
學習目標:
沒有留言:
張貼留言