wbzbee
驱动牛犊
驱动牛犊
  • 注册日期2007-03-15
  • 最后登录2007-05-30
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望9点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:3641回复:3

[求助]用CreateFile函数时如何获取设备名

楼主#
更多 发布于:2007-05-30 08:41
CreateFile函数第一个参数是要打开设备的设备名
请问如何获取设备名???

最新喜欢:

phoenix_lueiphoeni...
ljh1021
驱动小牛
驱动小牛
  • 注册日期2007-05-30
  • 最后登录2010-05-18
  • 粉丝0
  • 关注0
  • 积分936分
  • 威望126点
  • 贡献值0点
  • 好评度92点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-06-05 21:49
这个应该跟fopen(char *p,char *flag)里的第一个参数一样,
例如C:\\test\\test.txt
如果是驱动里的设备的话我就不知道了。
消灭人类暴政,世界属于三体!
emugod
驱动牛犊
驱动牛犊
  • 注册日期2005-10-10
  • 最后登录2007-06-13
  • 粉丝0
  • 关注0
  • 积分141分
  • 威望16点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-06-13 20:29
\\.\PHYSICALDRIVE0 表示打开第一个物理设备,依次类推
MSDN上面都有
Adayuer
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2010-11-04
  • 粉丝0
  • 关注0
  • 积分340分
  • 威望60点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-06-29 17:54
win32 api: QueryDosDevice  可以枚举当前系统中的所有设备名,不知道是不是你想要的。

昨天看到这个函数,写了个demo,先贴出来。

// QueryDosDevice.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <windows.h>


void printmsg()
{
    printf("  QueryDosDevice Example v0.1\n");
    printf("  Author: ×××××××××××××\n");
    printf("  Date: 2007-06-29 11:20\n");
    printf("  CopyRigth(C) 2007 All Right Reserved\n\n");
}

int main(int argc, char* argv[])
{
    int dwReturn, dwMaxSize, iCount;
    LPSTR szDeviceNames, szTemp;

    dwMaxSize = 1024;
    szDeviceNames = new char[dwMaxSize];

    printmsg();
    
    ZeroMemory(szDeviceNames, dwMaxSize);
    dwReturn = QueryDosDevice(NULL, szDeviceNames, dwMaxSize);
    if (dwReturn <= 0) // for 2k/xp
        {
            if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
                {
                 while (dwReturn == 0)
                  {
                    delete [] szDeviceNames;
                    dwMaxSize = dwMaxSize * 2;
                    szDeviceNames = new char[dwMaxSize];
                    dwReturn = QueryDosDevice(NULL, szDeviceNames, dwMaxSize);
                  }
                }
            else
                {                
                    delete [] szDeviceNames;
                    printf("error occurs #%d. \n", GetLastError());
                    return 0;
                }    
        }
    else
        {
            delete [] szDeviceNames;
            dwMaxSize = dwReturn;
            szDeviceNames = new char[dwMaxSize];
        };


    ZeroMemory(szDeviceNames, dwMaxSize);

    dwReturn = QueryDosDevice(NULL, szDeviceNames, dwMaxSize);

    szTemp = szDeviceNames;

    printf("  DosDeviceName List: \n\n");

    iCount = 1;
    printf("    %4d, ", iCount);
    while (! ((*szTemp == '\0') && (*(szTemp + 1) == '\0')))
        {
          if (*szTemp == '\0')
              {
                iCount++;
                printf("\n    %4d, ", iCount);                
              }
          else
              printf("%c", *szTemp);
          szTemp++;
        }
    
    delete [] szDeviceNames;
    printf("\n\n  finished. total %d DosDiviceName. press any key to exit.", iCount);
    scanf("%c", &szTemp);
    return 0;
}
游客

返回顶部