首页
社区
课程
招聘
[求助]win Xp下磁盘读写
发表于: 2012-3-7 14:35 2887

[求助]win Xp下磁盘读写

2012-3-7 14:35
2887
本人在学习FAT32文件格式的时候
遇到一个小麻烦 就是磁盘可以正常打开
但是读取数据的时候就出错了。原因没有找到
还请高人指点一二。
getlasterorr提示:系统找不到指定文件

代码如下:
#include "stdafx.h"
#include "malloc.h"
void nameerorr();  //提示错误的函数
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 	// TODO: Place code here.
	char dd[256]="tytytyty:";
	BYTE data [256] = {0};
	DWORD TY=0;
	char* buffer = (char*)malloc (512);

	BYTE jmpnop = 0; 
char devername[] = "\\\\.\\C:";
HANDLE hDev =CreateFile(devername, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);


    
  if (hDev == INVALID_HANDLE_VALUE )
  
  {
	 return 0;


  }
      

  if(ReadFile(hDev,data,254,&TY,0) )//[COLOR="Red"]这里总是错误。return 0;[/COLOR]  {



    jmpnop = data[0];
	wsprintf(dd,"%d",jmpnop);

  MessageBox(NULL,TEXT("ok"),TEXT("ok"),0);
  MessageBox(NULL,dd,"TY",0);
  }

  else
  {
     nameerorr();

	  MessageBox(NULL,TEXT("no"),TEXT("no"),0);

  }
              
	return 0;
}




void nameerorr()
{

DWORD dw;
 DeleteFile(TEXT("c:\\ty.EXE"));
 dw = GetLastError();
  TCHAR* lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区
FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
NULL,dw, //获取错误信息标识
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言
(LPTSTR)&lpMsgBuf, //消息缓冲区
0,
NULL);
MessageBox(NULL,lpMsgBuf,"",MB_ICONERROR); 


}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶下。
。。
2012-3-7 14:57
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶顶!!!!!!!!!!!!!!!帮忙哪。。。。。
2012-3-7 15:56
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
????????????????????????????????
2012-3-7 19:01
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请高手来帮帮忙????????
就是一到readfile  我用getlasterorr拦截错误
是显示 “系统找不到指定文件”。
也不知道怎么搞的 请高手指教下   。
2012-3-7 19:53
0
雪    币: 456
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
char devername[] = "\\\\.\\C:";

这个文件名有问题,系统中根本就找不到这个文件
2012-3-8 11:10
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
\\.\c
文件名不能有\符号吧?
2012-3-8 11:27
0
雪    币: 120
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
read data must ailgn with 0x200....u know....
2012-3-8 11:39
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
char devername[] = "\\\\.\\C:";
这段我改改成什么 请赐教。。。。????????
2012-3-8 12:04
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我的目的是打开磁盘 解析 文件系统。
所以拿createfile打开磁盘设备

就是不知道char devername[] = "\\\\.\\C:";

问题到底在哪?
2012-3-8 12:33
0
雪    币: 39
活跃值: (2856)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
文件名改成:
"\\\\.\\PhysicalDrive0"
2012-3-8 13:11
0
雪    币: 290
活跃值: (630)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
就是这个。。
2012-3-8 18:24
0
雪    币: 81
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
OK..原来设备读写出的数据必须是512的整倍数 也就是按照扇区来读写数据的。
问题已经解决了 谢谢各位的耐心的回来。
谢谢了
2012-3-10 12:38
0
游客
登录 | 注册 方可回帖
返回
//