windows下的api磁盘的读写

要有windows.h文件。文件能运行 必须有creatfile devicectrlo readfile writefile
point 要源代码。希望大神帮忙

Windwos 下是不允许直接操作硬件的,但可以通过 IOCTRL 来控制驱动实现对硬件的操作。
你是想要通过 IOCTRL 函数来直接对磁盘进行读写吗?如果是,则不仅仅需要这些 API 函数,还需要驱动的支持。

不知道你的目的是什么,要达到什么效果,它有一些标准的 IO

void CReadSectorDlg::OnReadButton()
{
UpdateData (TRUE) ;
CFile m_Sector_file ;
char * buffer ;

if ( m_FileName_str == "") 
{
    MessageBox ("Please enter a file to which the read sector contents are to be stored !!");
    return ;
}

m_Sector_file.Open (m_FileName_str, CFile::modeCreate | CFile::modeWrite  , NULL ) ;
buffer = (char*) malloc (512 * m_NumSec_int) ;

buffer = ReadSectors (m_Head_int, m_Track_int, m_Sector_int, m_NumSec_int);
if ( buffer == NULL ) 
{
    MessageBox ("Operation Failed -- !!");
    return ;
}
m_Sector_file.Write (buffer, 512*m_NumSec_int) ;
m_Sector_file.Close ();

MessageBox ("Operation Complete !","ReadSectors",  MB_ICONINFORMATION );

}

char * CReadSectorDlg::ReadSectors(int head, int track, int sector, int numsec)
{ //磁道,扇区
// getting logical sector from absolut head/track/sector ...
int LogicalSector = (sector-1) + (head*SECTORSPERTRACK) + (track*SECTORSPERTRACK*NUMOFHEADS) ;

typedef struct _DIOC_REGISTERS {
DWORD reg_EBX;
DWORD reg_EDX;
DWORD reg_ECX;
DWORD reg_EAX;
DWORD reg_EDI;
DWORD reg_ESI;
DWORD reg_Flags;
} DIOC_REGISTERS ;

// char *buffer , errah[10], erral[10] ;
char *buffer ;
HANDLE hDevice ;
DIOC_REGISTERS reg ;
BOOL fResult ;
DWORD cb ;

// Creating handle to vwin32.vxd ...win 95 / 98 !
hDevice = CreateFile ( "\\.\vwin32", 0, 0, NULL, 0, FILE_FLAG_DELETE_ON_CLOSE, NULL );

if ( hDevice == INVALID_HANDLE_VALUE )
{
//MessageBox ( "Error doing CreateFile () !" ) ;
/*
...this means that a handle to vwin32.vxd was not able to be opened ...
....so the operating system is not win 95/98 ...but NT , win2k ...or what (?) ..
.....reading sectors is more easy now .....
/
HANDLE hDevice;
char
buffer = (char*)malloc (512*numsec);
strset ( buffer , ' ');
DWORD bytesread ;
// Creating a handle to drive a: using CreateFile () function ..

hDevice = CreateFile("\\\\.\\c:", 
    GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 
    NULL, OPEN_EXISTING, 0, NULL); 

if (hDevice == INVALID_HANDLE_VALUE) 
{
    MessageBox ("Failed !");
    return NULL;
}

// Setting the pointer to point to the start of the sector we want to read ..

SetFilePointer (hDevice, (LogicalSector*512), NULL, FILE_BEGIN); 
if (!ReadFile (hDevice, buffer, 512*numsec, &bytesread, NULL) )
 {
     /*
     int err;
     char error[10];
     err=GetLastError ();
     itoa (err, error, 10);
     MessageBox (error, "Reading sectors ...Failed  ");
     */
     return NULL ;
 }

CloseHandle(hDevice); 
return buffer ;

}
http://blog.csdn.net/mao0514/article/details/38865043

看上去就是不要使用windows 文件API,比如CFile等来读写文件,而是通过DeviceControl,WriteFile这些来读写

w哦不知道怎么安装需要的驱动