Windows API 是一组由微软提供的函数库,用于开发者在Windows操作系统上构建应用程序。这些API提供了对系统资源的直接访问,如文件系统、内存管理和进程线程的控制。下面将详细阐述这些知识点。 一、文件系统 1. **磁盘和驱动器管理**: - `GetLogicalDriveStringsW` 用于获取所有逻辑驱动器的名称,以\0分隔。 - `GetLogicalDrives` 返回一个位掩码,表示可用的驱动器。 - `FindFirstVolumeW`, `FindNextVolumeW` 和 `FindVolumeClose` 用于枚举卷信息。 - `GetVolumeInformationW` 提供关于卷的详细信息,如卷名称、文件系统类型等。 - `GetDriveTypeW` 判断驱动器类型,如DRIVE_UNKNOWN、DRIVE_NO_ROOT_DIR等。 2. **文件和目录管理**: - `GetDiskFreeSpaceW` 和 `GetDiskFreeSpaceEx` 用于获取磁盘剩余空间。 - `PathFileExistsW` 判断文件或目录是否存在。 - `CopyFile`, `DeleteFileW`, `MoveFileW` 分别用于复制、删除和移动文件或重命名。 - `SHFileOperation` 提供更高级的文件操作,如剪切、复制等。 - `CreateFile` 创建或打开文件,具有A版和W版,分别对应ANSI和Unicode编码。 - `ReadFile`, `WriteFile`, `FlushFileBuffers` 分别用于读取、写入和刷新文件缓冲区。 - `SetFilePointer` 改变文件指针的位置,`GetFileSize` 获取文件大小。 - `CreateDirectoryW` 用于创建新的目录。 - `FindFirstFileW`, `FindNextFileW`, `FindClose` 用于遍历目录,通常配合通配符使用。 3. **文件属性**: - `GetFileAttributesExW` 获取文件或目录的属性,如隐藏、只读等。 二、内存操作 1. **堆操作**: - `HeapCreate` 和 `HeapDestroy` 分别创建和销毁堆。 - `HeapAlloc`, `HeapReAlloc`, `HeapSize`, `HeapFree` 用于分配、重新分配、查询大小和释放堆内存。 2. **局部堆操作**: - `LocalAlloc`, `LocalFree` 用于分配和释放局部堆内存,无需创建堆。 - `LocalSize` 查询局部堆内存的大小。 3. **虚拟内存操作**: - `VirtualAlloc` 分配虚拟内存。 - `VirtualQuery` 查询虚拟内存的信息。 - `VirtualFree` 释放虚拟内存。 - `VirtualProtect` 修改页面保护属性。 - `VirtualUnlock` 锁定内存,防止被交换到硬盘。 - `VirtualLock` 解锁内存,允许被交换。 4. **内存操作函数**: - `CopyMemory`、`FillMemory`、`MoveMemory` 和 `ZeroMemory` 分别用于内存拷贝、填充、移动和清零。 5. **获取内存信息**: - `GlobalMemoryStatus` 提供关于系统总内存状态的信息。 三、进程、线程、模块 1. **进程管理**: - `CreateProcessW` 创建新进程。 - `ShellExecuteW` 通过Shell执行程序。 - `GetCurrentProcessId`, `GetProcessId` 获取当前进程ID。 - `GetStartupInfoW` 获取启动信息。 - `OpenProcess` 根据进程ID打开进程,获取其句柄。 - `GetProcessTimes` 获取进程的运行时间。 - `GetProcessHandleCount`、`GetProcessIOCount` 等函数获取进程的资源使用情况。 2. **环境变量**: - `GetEnvironmentStringsW` 获取环境变量字符串。 - `SetEnvironmentVariableW` 设置环境变量。 - `FreeEnvironmentStringsW` 释放环境变量字符串。 3. **线程管理**: - `CreateThread` 创建线程,线程函数需转换为LPTHREAD_START_ROUTINE类型的回调。 - `GetCurrentThread` 获取当前线程句柄。 - `GetThreadPriority` 获取线程优先级。 - `SetThreadPriority` 设置线程优先级。 - `ExitThread` 结束线程。 4. **模块管理**: - `EnumProcessModules` 和 `GetModuleFileNameEx` 获取进程中的模块信息。 - `GetModuleHandle` 获取模块句柄。 - `GetModuleBaseName` 获取模块的基本名称。 以上只是Windows API的一部分,实际上,Windows API 包含了数千个函数,覆盖了操作系统的所有方面,包括用户界面、网络通信、设备控制等。开发者可以根据需求选择合适的API来实现功能。