我用CreateFile()得到了一个cdrom的handle(CreateFile("\\\\.\\Cdrom0")),这个handle没问题,DeviceIoControl能用,但这个handle能不能用ReadFile()来读呢?我用ReadFile()读这个handle,的到的error是ERROR_ACCESS_DENIED,
不知道是我在CreateFile中有些权限没设定对,还是cdrom handle 根本不能用来ReadFile()?
多谢指点~~

解决方案 »

  1.   

    你调用CreateFile时没有设置权限吧,把调用CreateFile的全部代码贴出来看看,应该是没有设对访问方式
      

  2.   

    应该在CreateFile上出的错,你的参数是什么设置的,帖出来看看
      

  3.   

    HANDLE CreateFile(
      LPCTSTR lpFileName,                         // file name
      DWORD dwDesiredAccess,                      // access mode
      DWORD dwShareMode,                          // share mode
      LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
      DWORD dwCreationDisposition,                // how to create
      DWORD dwFlagsAndAttributes,                 // file attributes
      HANDLE hTemplateFile                        // handle to template file
    );
    其中第二个参数指定了你是读还是写。
      

  4.   

    为什么不用标准的读写函数
    fopen
    fwrite
    fread
    fclose
      

  5.   

    多谢楼上几位的回复,现在问题解决了,是全县没设置好,
    设成GENERIC_READ|GENERIC_WRITE 就可以了~~实际上我这样直接读cdrom0,是想看看能不能用这个方法弄出一个cdrom的image file来,
    结果看来可以
    通过读CdRom0得到的文件,可以用daemon tools mount出同样一个光驱来
    但是我还有点不明白,这个image 文件到底是个什么冬冬呢?我用hex editor 看了一下,有点像iso镜像文件,但又和iso image不完全一样(相应的iso image要大过我得到这个文件……)
    那位高人能给说说,这样读CdRom0 得到的文件是啥啊?
    谢拉
      

  6.   


    .我要读一USB DEVICE的数据,和读U 盘是否一样?
    .用WINDOWS API :CreateFile 、ReadFile参数怎么给?
    .在CreateFile第一个参数用"COM1:",可以打开COM1,如何打开U盘?用“\\G"or "\\G:"都不可(G为映射盘符)