人亦已歌 发表于 2023-2-15 19:55:29

GetLogicalDriveStrings()遍历卷和FindFirstVolume()查询驱动器名

一、GetLogicalDriveStrings()遍历卷

#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#define BUFSIZE 1024
int main(){
      CHAR szLogicalDriveStrings;//定义一个字符串
      PCHAR szDrive;
      ZeroMemory(szLogicalDriveStrings,BUFSIZE);//字符串清零
      GetLogicalDriveStrings(BUFSIZE-1,szLogicalDriveStrings);//执行后所有数据都在szLogicalDriveStrings
      //szLogicalDriveStrings的格式为C:\\0D:\\0E:\\0\0,printf遇到\0便停止读取,所以直接printf只能输出第一个字符串
      //下面通过循环取出全部字符串
      szDrive = (PCHAR)szLogicalDriveStrings;//取出szLogicalDriveStrings的指针
      do
      {
                printf("%s\n",szDrive);//输出指针位置的字符串
                szDrive+=(lstrlen(szDrive)+1);//每次循环指针向后增长,指向下一个字符
      }while(*szDrive !='\x00');

      system("pause");
      return 0;
}






二、遍历设备名

#include <stdio.h>
#include <Windows.h>
#include <stdlib.h>
#define BUFSIZE 1024
int main(){
      TCHAR buf;
      HANDLE hvOL;
      bool bFlag;

      //FindNextVolume();
      hvOL=FindFirstVolume(buf,BUFSIZE);
      if(hvOL==INVALID_HANDLE_VALUE){
                printf("%s\n","没有找到任何卷");//输出指针位置的字符串
                return -1;
      }
      //输出
      printf("%s\n",buf);//输出指针位置的字符串为设备名格式 \\?\Volume{869eafc0-a2b7-11ec-a2e2-806e6f6e6963}
      
      while(FindNextVolume(hvOL,buf,BUFSIZE)){
                printf("%s\n",buf);//输出指针位置的字符串为设备名格式 \\?\Volume{869eafc0-a2b7-11ec-a2e2-806e6f6e6963}
      };

      bFlag=FindVolumeClose(hvOL);//关闭句柄
      system("pause");
      return bFlag;
}







alw_ddd 发表于 2023-2-17 22:17:19

是啊~~~学海无崖!忠无止尽~~~~~~

dbvdb 发表于 2023-2-18 20:27:16

忽然覺得自己好秒小 &gt;

小洲 发表于 2023-2-19 22:36:01

眉毛能富贵花每年

zzm800830 发表于 2023-2-21 00:49:33

真的是收教了谢谢

Sun-Ny 发表于 2023-2-21 16:56:04

感受很多,有兴有急,有悲有喜,做为一名程序员,我们更应该以科学的态度认识一切,学习的道路上是没有捷径的,因为那所谓的捷径,将是你离轨的起点.嗯,大家努力吧!

射月天狼 发表于 2023-2-22 06:01:08

谢谢你给了我一个好的起点

shzhanjie 发表于 2023-2-23 18:18:14

恩,很好。值得提倡。兄弟。有你的。你现在一个月的工资有多少呀??你现在的工作都做些什么呀?

hzyltll 发表于 2023-2-25 06:30:43

真的不错,佩服佩服!

andumw 发表于 2023-2-26 03:39:30

经典,也给我们清醒了一下!
页: [1] 2 3 4
查看完整版本: GetLogicalDriveStrings()遍历卷和FindFirstVolume()查询驱动器名