多工環境 (如 Windows) 與單工環境 (如 DOS) 最大的差異在於前者可以同時執行多個行程 (process),而且行程間還可以互通有無。因此對使用者而言整個作業系統變成為一個整合的工作環境。於是,過去以應用程式為主 (所謂 Application Center) 的觀念漸漸轉變為以文件為主 (所謂Document Center) 的觀念。這種觀念影響所及,各應用程式就可以專注在特定領域裡發揮專長,不必龐蕪地像個巨獸 --- 巨獸總是難以駕馭。軟體用戶可以選購數個精專的小型軟體,再由作業系統提供的資料交換與整合能力,完成其所要的產品 (也就是所謂的 document)。
這種 PC 工作環境的丕變,不論對終端使用者或是軟體發展者,都帶來極大的衝擊。
朋友看到 Windows IPC (InterProcess Communication) 的第一個想法也許是 : 「Windows 程式」與「Windows 程式」之間的通訊。沒有錯,我所規劃的 IPC 系列原先構想偏重在 Windows 應用層面上,但是欠缺虛擬機器之間的溝通,總覺遺憾;再加上讀者對 DOS/Windows 這一主題詢問殷切,所以整套書預定擴編為三冊 :
1) Windows 虛擬機器作業環境 - 讓 Windows 與 DOS 交談。
2) Windows IPC 程式設計 - Clipboard、DLL、Message Base DDE。
3) Windows IPC 程式設計 - Function Base DDEML、OLE。
讓 Windows 與 DOS 交談 ?! 有什麼好處 ? DOS 比較為多數人熟悉,或者說 DOS 是多數人比較有把握的個人電腦作業系統,許多裝置驅動程式在 DOS 環境下已經發展完備。如果能運用既有之 DOS 驅動程式技術對週邊設備做動作,再由 Windows 應用程式攫取資料,那麼整個工作就可能容易得多。事實上目前許多實務應用就是這麼完成的。
本書提供的另一個重點是 : 基礎知識。Windows 3.1 乃至目前還在研發階段的Windows 4.0,都還是架構在 MS-DOS 這個作業系統之上。這與完整的 32 位元作業系統Windows NT 的發展路線大相逕庭。雖然 Windows NT 不再需要 MS-DOS,但 NT 走的是高檔伺服器 (Server) 市場。一些工業界人士預期 Windows NT 將真正取代掉Windows 3.1 以及 WFW (Windows For Workgroup);另有一些預報員斷言 Windows NT 將取得大約 15%-20% 的 Windows 3.1 市場。我相信後者比較實際一點。
無論如何,對大多數終端客戶而言,在可預知的未來裡,Windows 3.1 和 WFW 仍是適當的工業技術,至於 32 位元 NT 程式可以藉「Windows 3.1 + Win32s 環境」來執行 (請看本書 1.5 節)。因此在目前以及可預測的未來,個人使用的桌上型電腦還是有絕大部份安裝 DOS/Windows,那麼顯然 MS-DOS 與Windows 的關係依然唇齒相依,緊密結合。本書提供的虛擬機器作業環境的觀念,對於想深入了解 Windows 的讀者,是一項極重要的基礎知識。
這本書撰寫末期,Windows NT 已經正式發表。於是我又加上 NT 的 VDM、WOW,以及Win32s 的介紹。這些主題配合原來 Windows 3.1 上對虛擬環境的各項討論,構成完整的知識,放在第一章。
要讓 Windows 程式與 DOS 程式溝通,基本上作法不外乎 :
■ 利用 Shared Memory 傳遞資訊。
■ 利用 Windows Clipboard 傳遞資訊。
■ 利用 Windows 的虛擬裝置驅動程式 (VxD)。
它們各有優劣也各有應用領域。第二、三、四章以及第六、七章完整介紹上面的每一項技術。由於第六章中需要撰寫虛擬裝置驅動程式 VxD,所以我先在第五章介紹 VxD 的設計方法。此外,DOS 與 Windows 之間最重要的介面 DPMI,在第七、八章也有說明。