windows系统API学习

2024-05-09 17:20
文章标签 系统 学习 windows api

本文主要是介绍windows系统API学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

win代码

1.代码:
GetLogicalDriveStrings(1024,(LPWSTR)DStr);
解释
DWORD GetLogicalDriveStringsW([in]  DWORD  nBufferLength,[out] LPWSTR lpBuffer);
[in] nBufferLengthTCHAR 中由 lpBuffer 指向的缓冲区的最大大小。 此大小不包括终止 null 字符。 如果此参数为零,则不使用 lpBuffer,即缓冲区不可用3。
[out] lpBuffer指向一个缓冲区的指针,该缓冲区接收一系列以 null 结尾的字符串,一个用于系统中每个有效驱动器,另外还有一个 null 字符。 每个字符串都是设备名称。 例如:电脑上有C,D两个硬盘盘符,则它能得到一个字符串是:'C',':','/',' ','D',':','/',' ',' '即:C:/<null>D:/<null><null>
返回值:是获得的字符串长度,即硬盘盘符的个数乘以4,

即 将所有的卷存储在buffer中,格式为:C:/NULLD:/NULLE:/NULL

2.代码:
DType = GetDriveType((LPCWSTR)DStr+i*4);
解释:

对设备类型进行判断

返回值:

  • #define DRIVE_UNKNOWN 0 //The drive type cannot be determined. 未知

  • #define DRIVE_NO_ROOT_DIR 1 //The root path is invalid; for example, there is no volume is mounted at the path. 可移动磁盘

  • #define DRIVE_REMOVABLE 2 //The drive has removable media; for example, a floppy drive, thumb drive, or flash card reader. U盘,软盘

  • #define DRIVE_FIXED 3//The drive has fixed media; for example, a hard drive or flash drive. 本地硬盘,移动硬盘

  • #define DRIVE_REMOTE 4 //The drive is a remote (network) drive.网络磁盘

  • #define DRIVE_CDROM 5 //The drive is a CD-ROM drive. CD-ROM

  • #define DRIVE_RAMDISK 6 //The drive is a RAM disk. RAM磁盘

3.代码
fResult = GetDiskFreeSpaceEx (  //计算磁盘的各种容量(LPCWSTR)DStr+i*4,                      // [IN]指定哪个磁盘(PULARGE_INTEGER)&i64FreeBytesToCaller,	// [OUT]磁盘空闲容量(PULARGE_INTEGER)&i64TotalBytes,		// [OUT]磁盘总容量(PULARGE_INTEGER)&i64FreeBytes);		// [OUT]可用的磁盘空闲容量
返回值:fResult是bool类型,能够判断驱动器是否在工作状态
4.代码
GetVolumeInformation(lpRootPathName,			  // [IN]卷所在的根目录,如:"C:\\", 如果为NULL,表示当前目录(LPWSTR)szVolumeName,	  // [OUT]输出参数,存放卷名缓冲区255,					  // [IN]卷名缓冲区长度&VolumeSerialNumber,	  // [OUT]卷序列号lpMaximumComponentLength, // [OUT]最大文件文件名组件长度,随文件系而变化lpFileSystemFlags,		  // [OUT]文件系统的一些属性,通常为一些宏的组合(LPWSTR)szFileSystem,	  // [OUT]说明何种文件系统,例如NTFS,  FAT等255);					  // [IN]文件系统缓冲区长度
5.代码
//创建文件  执行成功后会返回文件句柄
hDevice = CreateFile(driver_disknumber,  // 指向文件名的指针  GENERIC_READ | GENERIC_WRITE,    // // 访问模式(写 / 读) FILE_SHARE_READ | FILE_SHARE_WRITE,    //共享模式  若指明多个属性,可用“|”将几个属性做或运算NULL,             // 指向安全属性的指针 表示本文件句柄的安全属性,能影响其是否可被子进程继承等操作,//若设置为NULL 则子进程不能继承本句柄OPEN_EXISTING,    // 如何创建:指定是否创建文件、覆盖现有文件等,此处表示打开现有文件,若文件不存在则失败 0,                // 文件属性NULL);            // 用于复制文件句柄,一般情况下设置为NULL 
result = DeviceIoControl(  // 返回值是bool类型hDevice,                // 要操作的设备的句柄IOCTL_STORAGE_GET_DEVICE_NUMBER, // dwIoControlCode 控制设备的指令NULL,                            // lpInBuffer 设备操控请求数据的缓冲区基址,如果dwIoControlCode 指定了一个操作,该操作不需要输入数据,那么这个参数设为NULL0,                               // nInBufferSize lplnBuffer的size&number,           // output buffer 存放输出数据的buffersizeof(number),         // size of output buffer&readed,       // number of bytes returned 实际输出数据的bytesNULL      // OVERLAPPED structure
);CloseHandle(hDevice); //关闭打开的对象句柄

这篇关于windows系统API学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974011

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1