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

相关文章

Linux命令学习之二

每日一结 ​               命令置换:是将一个命令的输出作为另一个命令的参数,命令格式如下: commond1 `command2` 其中,命令command2的输出将作为命令command1的参数,需要注意的是, 命令置换的单引号为ESC键下方的 ` 其意思就是说,先运行单引号内的命令,再将其命令作为

Linux命令学习之一

每日一结                                                                                        注:当用户不确定一个软件包的类型时, 可使用file命令查看文件类型

Discuz! Ucenter API for JAVA

my.oschina.net/xshuai/blog/280242原文地址  Discuz! Ucenter API for JAVA   使用自己的项目于discuz联合登陆注册。 源码和jar文件都在http://code.google.com/p/discuz-ucenter-api-for-java/  有。 我只测试了非中文的注册。中文注册可以去http://code.goog

有懂discuz的吗?我需要在我自己的系统注册一个账号的时候,也把当前注册的账号放在discuz的用户里面。应该怎么做呀。需要discuz和java的接口吗?需要更改哪些东西。

discuz-ucenter_api_for_java 有懂discuz的吗?我需要在我自己的系统注册一个账号的时候,也把当前注册的账号放在discuz的用户里面。应该怎么做呀。需要discuz和java的接口吗?需要更改哪些东西。 所有的代码 1.UC.java package com.fivestars.interfaces.bbs.api;import java.io.IO

【Python3-API】通用文字识别示例代码

Python3-urllib3-API通用OCR示例代码 AccessToken获取可以参考:http://ai.baidu.com/forum/topic/show/497663(Python3-urllib3示例)Python安装什么的。大家百度经验即可 -----------------------------------------------------下面开始代码------

【Python3-API】情感倾向分析示例代码

Python3-urllib3-API情感倾向分析示例代码 AccessToken获取可以参考:http://ai.baidu.com/forum/topic/show/497663(Python3-urllib3示例)Python安装什么的。大家百度经验即可 -----------------------------------------------------下面开始代码-----

【百度语音合成】JavaAPI方式语音合成示例

Java-SDK合成语音示例:http://ai.baidu.com/forum/topic/show/492725REST-API文档地址:http://ai.baidu.com/docs#/TTS-API/top 本帖子主要示例通过REST API进行语音合成。使用Java语言进行示例Demo测试 创建语音应用并获取apikey secretkey  通过GET方式获取access_to

【百度语音识别】JavaAPI方式语音识别示例 MP3转PCM文件Java实现

【百度语音识别】JavaAPI方式语音识别示例MP3转PCM Java-API合成语音示例:http://ai.baidu.com/forum/topic/show/496727REST-API文档地址:http://ai.baidu.com/docs#/TTS-API/top注意:需要下载MP3插件jar。才可以进行MP3CONVERTPCM 链接: https://pan.baidu.c

javaweb学习-jstl-c:forEach中 varStatus的属性简介

varStatus是<c:forEach>jstl循环标签的一个属性,varStatus属性。就拿varStatus=“status”来说,事实上定义了一个status名的对象作为varStatus的绑定值。该绑定值也就是status封装了当前遍历的状态,比如,可以从该对象上查看是遍历到了第几个元素:${status.count} 我们常会用c标签来遍历需要的数据,为了方便使用,varSta

java学习—null和isEmpty 区别

String fly1 = new String(); String fly2 = ""; String fly3 = null; 解释如下: 此时fly1是分配了内存空间,但值为空,是绝对的空,是一种有值(值存在为空而已) 此时fly2是分配了内存空间,值为空字符串,是相对的空,是一种有值(值存在为空字串) 此时fly3是未分配内存空间,无值,是一种无值(