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

相关文章

在C#中调用Windows防火墙界面的常见方式

《在C#中调用Windows防火墙界面的常见方式》在C#中调用Windows防火墙界面(基础设置或高级安全设置),可以使用进程启动(Process.Start)或Win32API来实现,所以本文给大家... 目录引言1. 直接启动防火墙界面(1) 打开基本防火墙设置(firewall.cpl)(2) 打开高

基于Python实现局域网内Windows桌面文件传输

《基于Python实现局域网内Windows桌面文件传输》这篇文章介绍了如何使用Python实现一个局域网文件传输系统,包括发送端和接收端的代码示例,发送端和接收端都需要在同一局域网内运行,并且确保防... 目录发送端代码 (sender.py)接收端代码 (receiver.py)图形界面版本 (可选)使

C++简单日志系统实现代码示例

《C++简单日志系统实现代码示例》日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等,:本文主要介绍C++简单日志系统实现的相关资料,文中通过代码... 目录前言Util.hppLevel.hppLogMsg.hppFormat.hppSink.hppBuf

Linux挂载linux/Windows共享目录实现方式

《Linux挂载linux/Windows共享目录实现方式》:本文主要介绍Linux挂载linux/Windows共享目录实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录文件共享协议linux环境作为服务端(NFS)在服务器端安装 NFS创建要共享的目录修改 NFS 配

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

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

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

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

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