原创 關於“爲什麼需要爲內存設備環境(hdcMem)選擇與設備兼容的位圖?”的理解

設備環境(HDC)包含許多決定GDI函數如何工作的屬性,內存設備環境存在於系統內存中,與真正的設備環境兼容。設備環境可以理解爲設備的屬性,如顯示適配器的能顯示多少顏色等等。但是具體要顯示一副圖像,是需要存儲空間的,一副位圖其實就是

原创 VC調試時指定所需的DLL路徑

可以將依賴的所有dll所在目錄放在PATH環境變量下,然後重啓VS(必須重啓VS才能生效)。

原创 Windows CloseHandle

一個進程打開一個內核對象,在未調用CloseHandle就結束後,系統會關閉內核對象,這可以通過編寫驅動程序證明。

原创 Windows動態庫注意事項

如果是編譯的.c文件,則不能使用extern "C"這類語句; 用戶不能訪問動態庫的全局變量;

原创 libcurl實現的FTPClient

FTPClient.h #ifndef FTPClient_H #define FTPClient_H #if defined(_MSC_VER) || defined(_WIN32) #define _CRT_SECURE_N

原创 虛擬盤、邏輯盤、分區、卷的含義

轉載自百度: 添加鏈接描述

原创 行列式和矩陣的性質總結

1、行列式與其轉置相等。 2、行列式對換任意兩行(列),行列式變號。 3、如果行列式有兩行(列)相等,則行列式等0。 4、如果行列式有兩行(列)元素成比例,則行列式等0;行列式有全爲0的行(列),則行列式等0。 5、行列式某一行(

原创 C++類的虛表

#include <iostream> using namespace std; //每個類的虛表都不同 //只要包含了虛函數,則這個類就有一個獨立於其它類的虛表 //虛標存在於可執行文件中,Linux下執行時被加載到內存.ro

原创 C++通過實現String類描述運算符重載和臨時字符串對象調用c_str方法帶來的隱藏問題

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <iostream> using namespace std; cl

原创 一個完整的Windows驅動程序示例(應用與內核通信)

驅動程序DriverEntry.c #include <ntddk.h> #define DEVICE_NAME L"\\Device\\MyDDKDevice1" #define SYMBOLIC_LINK_NAME L"\

原创 x86 CPU工作方式

x86 CPU在實模式下通過設置CR0寄存器的PE位進入保護模式,GDTR指向GDT,GDT存放了LDT所在段的段信息,LDTR存放了LDT的段描述符在GDT中的索引,系統會爲每個任務維護一個LDT,任務切換伴隨着LDT和TR的切

原创 tinyxml2的使用方法

網上下載tinyxml2.h和tinyxml2.cpp,Windows和linux都可以用。 VC++編譯後得到tinyxml2.lib和tinyxml2.dll。 新建項目,包含tinyxml2.h文件 #include <st

原创 VS2015生成XP程序

1、平臺工具集要設置爲:Visual Studio 2015 - Windows XP (v140_xp) 2、連接器->系統->子系統必須設置爲控制檯或Windows 3、必須靜態鏈接VC運行時庫

原创 Windows驅動開發筆記

1、32位系統只能運行32位的驅動,64位系統只能運行64位的驅動; 2、DebugView既能查看32位驅動的輸出,也能查看64位驅動的調試輸出; 3、win7開機按F8,然後設置禁用驅動簽名強制,之後加載驅動工具和DebugV

原创 DLL注入提升進程權限(有時還需要注入程序使用管理員權限運行)

void SetToken() { HANDLE hToken; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY