曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7176|回复: 0
打印 上一主题 下一主题

[文件与IO] QueryDosDevice() -- 获取 MS-DOS 设备名信息

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-2-22 00:02:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
QueryDosDevice() 原型如下:
[C++] 纯文本查看 复制代码
DWORD WINAPI QueryDosDevice(
  __in_opt  LPCTSTR lpDeviceName,
  __out     LPTSTR lpTargetPath,
  __in      DWORD ucchMax
);

该函数可以获取 MS-DOS 设备名信息。

第 1 个参数 lpDeviceName 是输入参数,是 MS-DOS 设备名字符串。

第 2 个参数 lpTargetPath 是输出参数,用来存储返回结果的缓冲区。

第 3 个参数 ucchMax 是第 2 个参数所表示的缓冲区大小。

测试代码
[C++] 纯文本查看 复制代码
// QueryDosDevice.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#define    BUFSIZE    256

typedef TCHAR    *PTCHAR;

int _tmain(int argc, _TCHAR* argv[])
{
    setlocale (LC_ALL, "chs");

    TCHAR    szDevice[256] = {0};        // 存储磁盘根路径

    TCHAR    szDrive[3] = {0};            // 存储单个磁盘根路径

    TCHAR    szName[MAX_PATH];            // 存储 MS-DOS 设备信息

    PTCHAR    p = szDevice;

    GetLogicalDriveStrings(BUFSIZE, szDevice);

    _tprintf (TEXT("获取的 MS-DOS 设备名为:\n"));
    do {
        CopyMemory (szDrive, p, 2*sizeof(TCHAR));        // 将驱动器根路径拷贝到缓冲区,要去掉反斜杠

        if ( !QueryDosDevice(szDrive, szName, BUFSIZE) ) {
            _tprintf (TEXT("QueryDosDevice 获取失败 : %d\n"), GetLastError());
            return (-1);
        }
        UINT uNameLen = _tcslen(szName);    // 设备名长度

        if (uNameLen < MAX_PATH) {

            _tprintf (TEXT("%s  %s\n"), szDrive, szName);
        }
        while (*p++);        // 空循环,到下一个 NULL (C:\NULLD:\NULLE:\)
    } while (*p);            // 还有其它盘符

    return 0;
}

运行输出:
D:\WinAPI\QueryDosDevice\Debug>QueryDosDevice.exe
获取的 MS-DOS 设备名为:
B:  \Device\RAMDriv
C:  \Device\HarddiskVolume2
D:  \Device\HarddiskVolume1
E:  \Device\HarddiskVolume3
F:  \Device\CdRom0
X:  \Device\EncryptedDiskVolumeX
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 03:58 , Processed in 0.087362 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表