目 錄
譯者序
前言
第一部分 Windows2000 核心技術
第1章 WindowsDNA概述
1.1Windows和WindowsNT的歷史
1.2WindowsDNA剖析
1.3WindowsDNA的結構
1.3.1COM
1.3.2表示層
1.3.3防火墻層
1.3.4業(yè)務邏輯層
1.3.5數據層
1.4小結
第2章 虛擬內存和內存管理
2.1使用虛擬內存
2.2使用虛擬內存的時機
2.2.1保留一定的虛擬內存
2.2.2提交一個虛擬內存頁面
2.2.3鎖定虛擬內存頁面
2.2.4釋放虛擬內存頁面
2.2.5為其他進程分配內存
2.3使用虛擬內存的例子
2.4Windows2000堆函數
2.4.1Windows2000下的堆管理
2.4.2在C++類中使用私有堆
2.5小結
第3章 線程和進程
3.1進程和線程
3.2管理進程
3.2.1使用CreateProcess函數
3.2.2結束進程
3.3管理線程
3.3.1創(chuàng)建線程
3.3.2結束線程
3.3.3取出并改變線程的優(yōu)先級
3.3.4線程局部存儲
3.3.5判斷線程的標識符
3.3.6使用線程相似性
3.3.7使多個線程合作
3.3.8何時應創(chuàng)建線程
3.3.9何時不應創(chuàng)建線程
3.4同步
3.4.1使用Win32互鎖操作
3.4.2臨界區(qū)
3.4.3管理事件
3.4.4信號燈與互斥
3.5信號量
3.5.1信號量和等待函數
3.5.2信號量應用程序
3.5.3創(chuàng)建信號量
3.5.4返回信號量控制的資源
3.6在應用程序中使用信號量和臨
界區(qū)
3.7使用作業(yè)對象
3.7.1控制作業(yè)對象屬性
3.7.2作業(yè)對象實例
3.8小結
第4章 文件
4.1使用Windows2000文件系統(tǒng)
4.2執(zhí)行通用文件操作
4.2.1收集卷信息
4.2.2文件系統(tǒng)標志
4.2.3例子
4.2.4打開、關閉和刪除文件
4.2.5寫文件
4.2.6讀文件
4.3查找文件
4.3.1使用FindFirstFile、FindNextFile
和FindC1ose
4.3.2即將面世的FindFirstFileEx
4.3.3使用FILETIME結構
4.4執(zhí)行其他文件操作
4.4.1使用CopyFile
4.4.2使用MoveFile
4.4.3使用SetFilePointer
4.4.4使用GetFileSize
4.5使用異步輸入輸出
4.5.1使用重疊的輸入和輸出
4.5.2使用文件完成例程
4.5.3使用文件完成例程的例子
4.6利用加密文件系統(tǒng)
4.7使用文件通知函數
4.8小結
第5章 結構化異常處理
5.1異常處理的基礎知識
5.2SEH工作原理
5.3使用終止處理程序
5.3.1使用__leave來離開__try塊
5.3.2使用正常和反常終止
5.4使用異常處理程序
5.4.1使用異常過濾器
5.4.2處理浮點異常
5.5C++異常處理
5.5.1使用異常來檢測錯誤
5.5.2在錯誤產生后使用異常清除
5.5.3使用標準異常庫
5.5.4使用運行異常
5.5.5使用邏輯異常
5.5.6檢測構造時的錯誤
5.6把Win32SEH與C++異常處理集成
起來
5.7小結
第6章 動態(tài)鏈接庫
6.1理解庫
6.1.1靜態(tài)鏈接庫
6.1.2動態(tài)鏈接庫
6.1.3使用DLL的好處
6.1.4使用DLL的不利之處
6.2創(chuàng)建和使用動態(tài)鏈接庫
6.2.1DLL初始化
6.2.2導出和導入DLL函數和數據
6.2.3在裝入期間裝入DLL
6.2.4在運行時裝入DLL
6.2.5DLL版本控制
6.2.6創(chuàng)建DLL共享內存
6.2.7簡單的DLL實例
6.2.8使用C++和DLL
6.2.9使用MFC和DLL
6.3通用替換程序
6.3.1通用替換程序的結構
6.3.2通用替換程序函數
6.3.3通用替換程序實例
6.3.4通用替換程序的調試
6.4 小結
第7章 分布式安全性
7.1Windows2000安全性概述
7.2基本安全性數據結構
7.2.1進程和線程安全性令牌
7.2.2安全標識符
7.2.3ACE、DACL和SACL結構
7.2.4判斷ACL所需的大小
7.2.5給DACL添加允許訪問的ACE
7.2.6安全描述符
7.2.7獲取安全描述符
7.2.8使用安全屬性結構
7.3基于委托的訪問控制
7.3.1TRUSTEE結構
7.3.2ACTRL_ACCESS_ENTRY
結構
7.3.3ACTRL_ACCESS_ENTRY_LIST
結構
7.3.4ACTRL_PROPERTY_ENTRY
結構
7.3.5ACTRL_ACCESS結構
7.4模仿客戶程序
7.5小結
第8章 Wind0ws2000調試技術
8.1Windows調試策略
8.2使代碼易于調試
8.2.1Windows2000的調試支持
8.2.2MFC調試支持
8.3Windows2000調試技術概述
8.3.1符號調試信息
8.3.2Microsoft調試工具
8.3.3第三方調試工具
8.4VisualC++集成的調試工具
8.4.1VisualC++調試工具的基本知識
8.4.2窗口中的內容
8.4.3VisualC++調試工具技巧
8.5Windows調試工具WINDBG
8.6使用Softlce調試程序
8.7使用Dr.WAtson
8.8使用BugTrapper
8.9第三方工具的來源
8.9.1CompuwareNuMegaLab
8.9.2MutekSolutions有限公司
8.9.3Rational
8.10小結
第9章 Wind0ws2000服務
9.1服務
9.1.1與Windows2000服務相交互
9.1.2Windows2000服務和系統(tǒng)安全
9.2編程實現Windows2000服務
9.2.1用服務狀態(tài)更新服務控制管理器
9.2.2Windows2000服務的生存周期
9.2.3停止Windows2000服務
9.2.4往Windows2000事件日志中寫
數據
9.3Windows2000服務的例子
9.4小結
第10章 控制Windows2000服務
10.1編寫服務控制程序
10.1.1使用服務控制管理器注冊服務
10.1.2取消注冊服務
10.1.3自動重啟出錯的服務
10.2編寫控制面板小程序
10.2.1控制面板小程序接口
10.2.2CtlFileSpy:FileSpy的控制面板
小程序
10.3小結
第二部分 用戶交互/桌面
第11章 高級圖形設備接口編程
11.1GDI基礎
11.2設備描述表
11.2.1GDI映射模式
11.2.2GDI對象及其用法
11.3位圖
11.3.1DDB與DIB
11.3.216色DIB
11.3.3256色DIB
11.4DIB例子
11.4.1CDIBitmap類
11.4.2CBmpPalette類
11.4.3CDibDoc類的修改
11.4.4主窗體類的修改
11.4.5CDibView類的修改
11.5路徑
11.6元文件
11.7元文件的例子
11.7.1CMetaView類聲明的修改
11.7.2CMetaView類析構函數的修改
11.7.3對CMetaView:OnInitialUpdate
的修改
11.7.4鼠標左擊
11.7.5對CMetaView:OnDraw的修改
11.8小結
第12章 所有者作圖和定制作圖
12.1使用所有者作圖控件
12.2實現所有者作圖控件
12.2.1處理WM_DRAWITEM消息
12.2.2處理WMMEASUREITEM
消息
12.2.3處理WM_COMPAREITEM消息
12.2.4處理WM_DELETEITEM消息
12.3所有者作圖實例:OWnDraw
12.3.1創(chuàng)建CListItem結構
12.3.2處理所有者作圖消息
12.3.3向列表框中加入項目
12.3.4處理WM_MEASUREITEM消息
12.3.5處理WM_DRAWITEM消息
12.3.6處理WM_DELETEITEM消息
12.4使用定制作圖
12.4.1定制作圖所使用的數據結構
12.4.2CustDraw:使用MFC的定制作
圖實例
12.5小結
第三部分 COM和Active
第13章 COM和OLE
13.1COM和OLE概述
13.2常用COM和OLE技術
13.2.1復合文檔
13.2.2可視化編輯
13.2.3自動化
13.2.4OLE數據傳輸
13.2.5拖放
13.2.6與其他應用程序集成
13.3使用COM和OLE編程
13.3.1使用COM接口
13.3.2標識COM接口和對象
13.3.3處理GUID
13.3.4處理版本問題
13.3.5使用IUnknown接口
13.3.6創(chuàng)建對象
13.4COM組件的一個例子
13.4.1使用Shell擴展機制
13.4.2理解快捷菜單擴展
13.4.3創(chuàng)建實例
13.5小結
第14章 自動化
14.1創(chuàng)建使用自動化的可編程應用程序
14.2IDispatch接口
14.2.1IDispatch使用的數據類型
14.2.2IDispatch中的函數
14.2.3IDispatch接口與虛函數表
14.3創(chuàng)建使用MFC的自動化服務程序
14.3.1修改自動化選項
14.3.2修改文檔類
14.3.3為AutoBub創(chuàng)建對話框
14.3.4為AutoBub畫泡泡對象
14.3.5往AutoBub中加入自動化支持
14.4使用VisualBasic創(chuàng)建自動化控制
程序
14.5在VBScript中使用自動化
14.6小結
第15章 OLE拖放
15.1OLE剪貼板
15.1.1使用FORMATETC和
STGMEDIUM結構
15.1.2處理FORMATETC結構
15.1.3使用DVTARGETDEVICE結構
15.1.4使用STGMEDIUM結構
15.1.5使用IDataObject接口
15.2使用OLE拖放
15.2.1OLE拖放來源
15.2.2OLE拖放目標
15.3拖放實例
15.4 小結
第16章 COM線程化模型
16.1COM線程化方案
16.1.1進程內COM服務程序
16.1.2進程外服務程序
16.1.3管理進程間的內存
16.1.4使用住所中的COM
16.2STA 和MTA
16.2.1為每個線程選擇一個住所
16.2.2線程的最佳住所
16.2.3為COM對象選擇住所
16.2.4在客戶程序和COM對象間不匹配
的住所
16.3在COM住所間調度
16.3.1共享接口指針的錯誤方法
16.3.2共享接口指針的正確方法
16.4小結
第17章 COM對象
17.1使用IDL
17.1.1深入MIDL屬性
17.1.2編譯MIDL源文件
17.1.3使用類型庫
17.1.4使用IDL中的結構
17.1.5使用IDL中的枚舉類型
17.1.6指針和IDL
17.1.7使用IDL中的方向屬性
17.2使用ATL創(chuàng)建定制組件
17.2.1常用的ATL類
17.2.2ATLCOM接口映射
17.2.3使用ATL向導
17.2.4將代理/存根代碼合并到DLL中
17.2.5一個定制COM對象的示例
17.3使用moniker
17.3.1系統(tǒng)moniker的示例
17.3.2創(chuàng)建moniker實例
17.3.3將moniker轉換為文本字符串
17.3.4根據顯示名創(chuàng)建moniker
17.4連接點
17.5定制調度
17.5.1深入定制調度
17.5.2深入按值調度
17.5.3實現定制代理
17.5.4在服務器上實現IMarshal
17.5.5比較使用定制代理和標準代理
的性能
17.6小結
第18章 ActiveX控件
18.1什么是ActiveX控件
18.2ActiveX控件接口
18.3ActiveX控件的屬性 事件和
方法
18.3.1屬性
18.3.2事件
18.3.3方法
18.4一個ActiveX控件示例
18.4.1創(chuàng)建工程
18.4.2繪制控件
18.4.3定義AxEdit的屬性
18.4.4字符輸入處理
18.4.5修改控件的位圖
18.5測試ActiveX控件
18.5.1選擇控件的測試容器
18.5.2使用TSTCON32測試容器
18.5.3測試屬性
18.6使用ATL創(chuàng)建ActiveX控件
18.6.1使用ATL實現stock屬性
18.6.2使用ATL實現custom屬性
18.6.3通過ATL使用ambient屬性
18.6.4在ATL工程中實現事件
18.6.5添加消息和事件處理程序
18.7用ATL構建的ActiveX控件
18.7.1PopButton的基本設計思路
18.7.2創(chuàng)建PopBtn工程
18.7.3用VisualBasic測試PopButton
控件
18.8小結
第19章 異步COM
19.1COM中的同步方法和異步方法
19.2Windows2000中對異步方法的
支持
19.2.1IDL中的異步支持
19.2.2Windows2000中其他新的異步
組件
19.2.3使用Fire和Forget模式
19.3一個異步COM的示例
19.3.1IShop接口
19.3.2AsyncTest工程
19.3.3一個同步測試客戶
19.3.4IShop接口的第二版
19.3.5一個異步測試客戶
19.4小結
第20章 DCOM
20.1位置透明性
20.1.1創(chuàng)建遠程對象的實例
20.1.2使用IMultiQI接口
20.1.3確定外部引用是否有效
20.2DCOM中的安全性
20.2.1安全性的類型
20.2.2深入調用安全性
20.2.3深入模仿與偽裝
20.2.4設置計算機的安全級別
20.2.5設置進程的安全屬性
20.2.6深入安全模塊
20.2.7設置接口的客戶端安全屬性
20.2.8管理服務器端的安全性
20.3使用DCOM配置程序
20.3.1使用DCOMConfig設置系統(tǒng)
端屬性
20.3.2使用DCOMConfig設置特定
AppID的屬性
20.4小結
第四部分 COM+
第21章 COM+服務簡介
21.1事務簡介
21.1.1ACID:事務處理的四大特性
21.1.2事務的分類
21.1.3兩階段提交協(xié)議
21.2深入COM+內的事務
21.3構建一個可支持事務處理的COM+
組件
21.3.1使用VisualBasic構建COM
對象
21.3.2啟示
21.3.3向COM+應用程序中添加組件
21.4小結
第22章 構建COM+服務組件
22.1好的ComponentService組件
22.1.1生命周期/無狀態(tài)
22.1.2無狀態(tài)對象
22.1.3活動
22.2編寫事務組件
22.2.1創(chuàng)建通用事務組件
22.2.2使用VisualC++創(chuàng)建事務性
COM+對象
22.2.3使用VisualBasic創(chuàng)建事務性
COM+對象
22.3使用COM編譯器支持類
22.3.1TLH和TLI:檢查輸出
22.3.2COM編譯器命令屬性
22.3.3使用com_error產生和捕捉
錯誤
22.3.4使用任何數據:_variant_t
22.3.5使用BSTR:_bstr_t
22.4使用多個COM+對象
22.4.1組合COM+對象的事務生命
周期
22.4.2有多個對象參與的事務的輸出
22.4.3錯誤處理
22.4.4傳遞參數和接口
22.5小結
第23章 使用IIS與COM+
23.1Web應用程序基礎
23.1.1ASP概覽
23.1.2腳本示例
23.1.3ASP應用程序
23.1.4內置的ASP對象
23.2構建Web應用程序
23.3實現方法
23.3.1對HTML窗體的處理
23.3.2管理cookie
23.3.3創(chuàng)建cookie
23.3.4ServerVariables集合
23.3.5對ASP錯誤的處理
23.3.6定義全局關鍵字
23.3.7強制次序
23.3.8用JavaScript簡化重定向過程
23.3.9管理對象的更為簡單的方法
23.3.10使用二進制數據
23.3.11編寫動態(tài)代碼
23.3.12動態(tài)地調整內容的大小
23.3.13數據驗證
23.3.14下載文件
23.3.15發(fā)送email
23.3.16瀏覽器的功能
23.4組件開發(fā)
23.4.1一個簡單的ASP組件
23.4.2內容更豐富的ASP組件
23.5事務性的ASP頁
23.6小結
第24章 使用COM+駐留內存數據庫
24.1駐留內存數據庫
24.2一個簡單的示例
24.2.1創(chuàng)建IMDB
24.2.2創(chuàng)建IMDB數據源
24.2.3引用資源表
24.3IMDB的一些細節(jié)問題
24.3.1在OLEDB級支持哪些接口
24.3.2特定條件是如何與OLEDB使用
者模板相關的
24.3.3ADO使用的細節(jié)
24.4小結
第25章 高級COM+服務
25.1通過對象共享和負載平衡獲得可擴
展性
25.1.1實現IObjectControl
25.1.2動態(tài)負載平衡
25.2一些高級的事務概念
25.2.1避免死鎖和阻塞
25.2.2IObjectConstruct接口
25.2.3特定情況下的事務控制
25.2.4由客戶控制事務
25.3排隊組件
25.3.1什么是排隊組件
25.3.2排隊組件是如何工作的
25.3.3編寫排隊組件
25.3.4使用排隊組件發(fā)送返回消息
25.4異步分發(fā)信息
25.4.1出版者/訂戶結構簡介
25.4.2構建出版者/訂戶工程
25.5小結
第五部分 分布式Wind0ws2000服務
第26章 管道
26.1管道的類型
26.2無名管道
26.2.1創(chuàng)建和關閉無名管道
26.2.2管道的讀和寫
26.2.3使用無名管道與另一進程通信
26.2.4使用無名管道的一個示例
26.3有名管道
26.3.1有名管道的類型
26.3.2創(chuàng)建和關閉有名管道
26.3.3連接和使用有名管道
26.3.4使用有名管道的示例
26.4小結
第27章 活動目錄
27.1活動目錄概覽
27.1.1名字空間組織
27.1.2樹和森林
27.2使用ADSI管理活動目錄
27.2.1在VisualBasic和VisualC++中
使用ADSI
27.2.2ADSI綁定字符串
27.2.3ADSI輔助函數
27.2.4無服務的綁定和ADSI
27.2.5ADSI所提供的COM接口
27.3其他資源
27.4小結
第28章 MSMQ
28.1MicrosoftMessageQueueServer
簡介
28.1.1MSMQ和有名管道
28.1.2安裝MSMQ
28.1.3消息隊列的類型
28.1.4公用隊列和專用隊列
28.2MSMQ對象屬性
28.2.1隊列屬性
28.2.2消息屬性
28.2.3機器屬性
28.2.4內存分配
28.3使用Win32API創(chuàng)建和管理消息
隊列
28.3.1創(chuàng)建消息隊列
28.3.2打開已有的隊列
28.3.3向消息隊列發(fā)送消息
28.3.4從消息隊列中接收消息
28.3.5關閉消息隊列句柄
28.3.6刪除消息隊列
28.4用VisualBasic編寫的消息隊列客戶
程序
28.5小結
第29章 集群服務器
29.1集群服務器的結構
29.1.1集群服務器的硬件
29.1.2MSCS軟件組件
29.1.3集群的啟動和恢復
29.2集群API
29.2.1集群對象管理API
29.2.2資源DLLAPI
29.2.3集群管理擴展API
29.3一個可感知集群的示例
29.3.1ClusterQuote工程
29.3.2QuoteClient工程
29.3.3HighAvailabilityQuotes集群資源
類型
29.4小結