原创 《Windows核心編程》——五 作業

前言     Windows提供了一個作業(job)內核對象,它允許我們將進程組合在一起並創建一個“沙箱”來限制進程能夠做什麼。最好把作業對象想象成一個進程容器。但是,創建只包含一個進程的作業同樣非常有用,因爲這樣可以對進程施加平時不能施

原创 define中#的作用

# 和 ## 操作符是和#define宏使用的. 使用# 使在#後的首個參數返回爲一個帶引號的字符串. 例如, 命令 #define to_string( s ) # s 將會使編譯器把以下命令 cout << to_

原创 《Windows核心編程》——三 內核對象

前言     內核對象用於管理進程、線程和文件等諸多種類的大量資源。 3.1 何爲內核對象     內核對象包括訪問令牌對象、事件對象、文件對象、文件映像對象、I/O完成端口對象、作業對象、郵件槽對象、互斥量對象、管道對象、進程對象、信

原创 windows遠程掛載

          在VS2010中有支持遠程掛載調試的工具,位於其安裝目錄下,爲Common7\IDE\Remote Debugger\x64 下面的msvsmon.exe,只要在被掛載的PC機上面運行上面的程序,並對其中的幾個參數進行

原创 線程安全的單例模式的實現

C++編程語言是一個應用廣泛的計算機應用語言,它功能強大,在一定程度上大大提高了程序開發效率。C++單例模式也稱爲單件模式、單子模式。使用單例模式,保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該實例被所有程序模塊共享。有很多

原创 淺析C++中的define

#define是C語言中提供的宏定義命令,其主要目的是爲程序員在編程時提供一定的方便,並能在一定程度上提高程序的運行效率,但學生在學習時往往不能 理解該命令的本質,總是在此處產生一些困惑,在編程時誤用該命令,使得程序的運行與預期的目的不一

原创 Pointer-to-Member Operators: .* and ->*

expression .* expression  expression –>* expression Remarks The pointer-to-member operators, .* and

原创 插入一序列的key-value的map

MapAssign is used to insert a series of key-value pair into a map. it will help to statically initialize a constant map

原创 《Windows核心編程》——四 進程

前言     一般將進程定義爲一個正在運行的程序的一個實例,它由兩部分組成:     ①一個內核對象,操作系統用它來管理進程。內核對象也是系統保存進程統計信息的地方     ②一個地址空間,其中包含所有可執行文件或dll模塊的代碼和數據。

原创 UML六大類圖關係

在看類圖的時候,經常會看到類與類之間的連接線是不一樣的,常見的連接線一般包括6種,不同的連接線也代筆着類與類之間不同的關係。概括如下:在UML類圖中,常見的有以下幾種關係: 泛化(Generalization),  實現(Realizat

原创 類的靜態成員

C++靜態成員包括了靜態數據成員和靜態成員函數。這裏主要總結下它們的用法、性質等。       一:靜態數據成員       在類體中的數據成員的聲明前加上關鍵字static,則該數據成員就成爲了該類的靜態數據成員。和類的其他數據成員一樣

原创 C++模板類推導

#include "stdafx.h" #include <iostream> #include <memory> #include <vector

原创 《Windows核心編程》——二字符與字符串處理

Unicode的好處:Unicode會增加程序的執行性能,併爲本地化工作奠定基礎,有利於同COM和.Net Framework的互操作。 2.1 字符編碼 用戶一直在將文本字符串編碼成一組以0結尾的單字節字符,並調用strlen,它會

原创 揭祕 typedef四用途與兩陷阱

typedef用來聲明一個別名,typedef後面的語法,是一個聲明。本來筆者以爲這裏不會產生什麼誤解的,但結果卻出乎意料,產生誤解的人不在少數。罪魁禍首又是那些害人的教材。在這些教材中介紹typedef的時候通常會寫出如下形式: ty

原创 Windows核心編程一 錯誤處理

    DWORD iErrorValue;     while(std::cin>>iErrorValue)     {         HLOC