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

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默