资源简介

FATFSv0.12 在移动平台开发时调试比较麻烦,这是移植到windows端vs2010的测试代码。支持多线程写文件到磁盘。

资源截图

代码片段和文件信息

/*-----------------------------------------------------------------------*/
/* Low level disk I/O module skeleton for FatFs     (C)ChaN 2014        */
/*-----------------------------------------------------------------------*/
/* If a working storage control module is available it should be        */
/* attached to the FatFs via a glue function rather than modifying it.   */
/* This is an example of glue functions to attach various exsisting      */
/* storage control modules to the FatFs module with a defined API.       */
/*-----------------------------------------------------------------------*/

#include “diskio.h“ /* FatFs lower layer API */


/*-----------------------------------------------------------------------*/
/* Get Drive Status                                                      */
/*-----------------------------------------------------------------------*/

static HANDLE hDevice = NULL;
long long g_SD_DevCap = 0;
static DSTATUS DiskStatus;  //初始话磁盘状态为未初始化

DSTATUS disk_status (
                     BYTE pdrv /* Physical drive nmuber to identify the drive */

{
    return DiskStatus;
}

/*-----------------------------------------------------------------------*/
/* Inidialize a Drive                                                    */
/*-----------------------------------------------------------------------*/

DSTATUS disk_initialize (
                         BYTE pdrv /* Physical drive nmuber to identify the drive */

{
//  hDevice = CreateFile(“\\\\.\\G:“ 
//  GENERIC_READ|GENERIC_WRITE 
//  FILE_SHARE_READ | FILE_SHARE_WRITE 
//  NULL OPEN_EXISTING FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED NULL
//  ); 
int cbRet;
BOOL bRet;
char drv = (char)pdrv;
char DriveDevicePath[]=“\\\\.\\Z:“;
DriveDevicePath[4] = ‘G‘;

hDevice = CreateFileA(
(DriveDevicePath)
GENERIC_READ | GENERIC_WRITE
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE
NULL 
OPEN_EXISTING 
FILE_FLAG_NO_BUFFERING
NULL);
if (hDevice == INVALID_HANDLE_VALUE) 
{
DiskStatus = STA_NOINIT;
return DiskStatus;
}

bRet= DeviceIoControl(
(HANDLE) hDevice              // handle to device
FSCTL_ALLOW_EXTENDED_DASD_IO  // dwIoControlCode
NULL                          // lpInBuffer
0                             // nInBufferSize
NULL                          // lpOutBuffer
0                             // nOutBufferSize
&cbRet          // number of bytes returned
NULL                           // OVERLAPPED structure
);

// if ( !bRet )
// printf ( “Failed to allow extended DASD on device“ );
// else
// printf ( “FSCTL_ALLOW_EXTENDED_DASD_IO OK\n“ ); 

// lock it
bRet = DeviceIoControl( hDevice FSCTL_LOCK_VOLUME NULL 0 NULL 0 &cbRet NULL );

if ( !bRet )
{
DWORD ret = GetLastError();
DiskStatus = STA_NOINIT;
return DiskStatus;
}

return DiskStatus;
}

void seek_to_sect( HANDLE hDevice DWORD 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-25 11:32  Debug\
     目录           0  2016-10-25 11:30  FATFS\
     目录           0  2016-10-25 11:30  FATFS\Debug\
     文件        3253  2016-10-25 11:30  FATFS\Debug\FATFS.Build.CppClean.log
     文件         445  2016-10-25 11:30  FATFS\Debug\FATFS.log
     文件        4557  2016-10-25 10:48  FATFS\FATFS.cpp
     文件        4684  2016-10-24 18:12  FATFS\FATFS.vcxproj
     文件        2020  2016-10-24 18:12  FATFS\FATFS.vcxproj.filters
     文件         704  2016-10-24 19:03  FATFS\FATFS.vcxproj.user
     文件        1539  2016-10-20 14:34  FATFS\ReadMe.txt
     目录           0  2016-10-24 09:57  FATFS\Release\
     文件       84906  2016-10-24 09:57  FATFS\Release\CL.read.1.tlog
     文件        4078  2016-10-24 09:57  FATFS\Release\CL.write.1.tlog
     文件        1256  2016-10-24 09:57  FATFS\Release\FATFS.Build.CppClean.log
     文件         381  2016-10-24 09:57  FATFS\Release\FATFS.exe.intermediate.manifest
     文件          85  2016-10-24 09:57  FATFS\Release\FATFS.lastbuildstate
     文件        2496  2016-10-24 09:57  FATFS\Release\FATFS.log
     文件       90820  2016-10-24 09:57  FATFS\Release\FATFS.obj
     文件     1245184  2016-10-24 09:57  FATFS\Release\FATFS.pch
     文件           0  2016-10-24 09:57  FATFS\Release\FATFS.write.1.tlog
     文件      589326  2016-10-24 09:57  FATFS\Release\cc936.obj
     文件        5060  2016-10-24 09:57  FATFS\Release\cl.command.1.tlog
     文件       65860  2016-10-24 09:57  FATFS\Release\diskio.obj
     文件      223474  2016-10-24 09:57  FATFS\Release\ff.obj
     文件        2568  2016-10-24 09:57  FATFS\Release\link.command.1.tlog
     文件        4626  2016-10-24 09:57  FATFS\Release\link.read.1.tlog
     文件        1518  2016-10-24 09:57  FATFS\Release\link.write.1.tlog
     文件         512  2016-10-24 09:57  FATFS\Release\mt.command.1.tlog
     文件         794  2016-10-24 09:57  FATFS\Release\mt.read.1.tlog
     文件         336  2016-10-24 09:57  FATFS\Release\mt.write.1.tlog
     文件       50714  2016-10-24 09:57  FATFS\Release\stdafx.obj
............此处省略19个文件信息

评论

共有 条评论