釋出
2012年1月21日 (最後更新: 2012年1月28日)

WinAPI 原始碼

評分: 4.1/5 (40 票)
*****
我向您展示一個小型 WinAPI 原始碼的集合。如果您有任何建議或發現程式碼中的錯誤,請隨時私信我。

目錄

  • Dll 注入
  • 獲取磁碟大小
  • 驅動器磁碟機代號更改器
  • 將副檔名與程式關聯
  • NtQuerySystemInformation

DLL 注入示例

演示如何將 DLL 注入到程序中。專案包括一個簡單的 DLL 和一個用於測試的 HelloWorld 應用程式。

下載 (CodeBlocks 專案)

獲取磁碟大小

這個簡單的應用程式演示瞭如何使用 DeviceIOControl() 和 IOCTL_DISK_GET_LENGTH_INFO 來獲取磁碟或分割槽大小。
如果您不需要一個完全可用的應用程式,可以使用此函式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//
// GetDisk or or partition size
// dsk can be \\\\.\\PhysicalDrive0 or \\\\.\\C:
//
uint64_t GetDiskLengthIoctl(const char *dsk)
{
  HANDLE hDisk=CreateFile(dsk,GENERIC_READ,FILE_SHARE_VALID_FLAGS,0,OPEN_EXISTING,0,0);
  if(hDisk==INVALID_HANDLE_VALUE)
    {
      cerr<<"Could not open the disk. GetLastError() returned "<<GetLastError()<<endl;
      return 0;
    }
  GET_LENGTH_INFORMATION gli;
  DWORD ret;

  DeviceIoControl(hDisk,IOCTL_DISK_GET_LENGTH_INFO,0,0,&gli,sizeof(gli),&ret,0);

  CloseHandle(hDisk);
  return gli.Length.QuadPart;
}


下載 (CodeBlocks 專案)

驅動器磁碟機代號更改器

一個簡單的程式,演示瞭如何使用 SetVolumeMountPoint 更改驅動器磁碟機代號

下載 (CodeBlocks 專案)

將副檔名與程式關聯

下載 (CodeBlocks 專案)

NtQuerySystemInformation 示例

.zip 檔案包含三個獨立的專案,演示瞭如何使用 NtQuerySystemInformation() 函式來...
  • 獲取所有正在執行的程序的列表
  • 顯示有關物理記憶體的一些資訊(頁面大小,物理頁面數)和處理器數量
  • 顯示磁碟、序列埠、光碟機的數量

下載 (CodeBlocks 專案)

附件: [CodeInject.zip] [drive_letter_changer.zip] [ext_assoc.zip] [get_disk_size.zip] [nt_query_system_information.zip]