发布
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]