📄 api.lst
字号:
402 2 return FALSE;
403 2 memset(Cache,0,512);
404 2 }
405 1 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
406 1 //如果目录且文件名存在则在该目录下创建一个文件
407 1 /////////////////////////////////////////////////////////////////////////////
408 1 //分离出文件名
409 1 p2=strrchr(path, '\\');
410 1 if(p2==NULL)
411 1 return TRUE;
412 1 memset(NewFileName,0,12);
413 1 // memcpy(NewFileName,(),(strlen(dirname)-strlen(NewDirName)+1));
414 1 if(!CheckFileName(p2+1,p1))
415 1 return FALSE;
416 1 strncpy(name, p1, 11);
417 1 memset(pdir, 0, sizeof(dir));
418 1 // memcpy(dir.Name, name, 11);
419 1 // 在数据区写上文件的头信息
420 1 for(i=0;i<SimpleBpb.SecPerClus;i++)
421 1 {
422 2 if(!Read(ClusterToSec(NewCluster)+i,1,(BYTE *)Cache))
423 2 return 0xffffffff;
424 2 pdir=(struct _DIR *)Cache;
425 2 for(pdir = (struct _DIR *)Cache; (BYTE*)pdir < Cache + SimpleBpb.BytsPerSec; pdir++)
C51 COMPILER V8.08 API 04/25/2009 23:03:21 PAGE 8
426 2 {
427 3 if(pdir->Name[0]=='\0')
428 3 {
429 4 memcpy((BYTE *)pdir->Name,name,11);
430 4 if(!Write(ClusterToSec(NewCluster)+i,1,Cache,TRUE))
431 4 return FALSE;
432 4 // memcpy(&ApiFileControl.dir.Name,name,11);
433 4 memcpy(&ApiFileControl.dir,pdir,sizeof(struct _DIR));
434 4 ApiFileControl.StartSectorNum=ClusterToSec(WordSwap(pdir->FstClusLO));
435 4 ApiFileControl.SectorOffset=0;
436 4 ApiFileControl.DirSectorNum=ClusterToSec(NewCluster)+i;
437 4 //ApiFileControl.isDir=1;
438 4 // ApiFileControl.dir.FileSize=0;
439 4 ApiFileControl.DirIndex = ((BYTE*)pdir - Cache)/sizeof(struct _DIR);
440 4 return TRUE;
441 4 }
442 3 pdir++;
443 3 }
444 2 }
445 1 return TRUE;
446 1 }
447 /////////////////////////////////////////////////////////////////////////
448 //*所有测试工作从这里开始
449 BYTE ApiDemo(void)
450 {
451 1 // BYTE buf[5120],buf1[1024],buf2[1024];
452 1 // WORD i;
453 1 ////////////////////////////////////////////////////////////////////////
454 1 PollDisk(); //首先配置U盘:获取它的基本信息,测试盘是否已经准备好
455 1 //DemlayMs(100); //根据不同情况需要延迟同的时间。
456 1 InitFsys(); //读取FAT信息然,初始化必要的FAT参数
457 1 //************************************************************************
458 1 //////////////////////////////////////////////////////////////////////////
459 1 //
460 1 //去调注释线,打开下函数设置断点是可测试创建文件
461 1 // if(!CreatFile("demo.txt",0x20))
462 1 // return FALSE;
463 1 //
464 1 ///////////////////////////////////////////////////////////////////////////
465 1 // if(!OpenFile("demo.txt"))
466 1 // return FALSE;
467 1 //************************************************************************
468 1 //测试一:创建一个空文件
469 1 //
470 1 //去调注释线,打开下函数设置断点是可测试创建文件
471 1 // if(!CreatFile("demo.txt",0x20))
472 1 // return FALSE;
473 1 //////////////////////////////////////////////////////////////////////////
474 1 //************************************************************************
475 1 //测试二:创建文件demo.txt并写上少量数据
476 1 //
477 1 // for(i=0;i<5120;i++)
478 1 // buf[i]='j';
479 1 // if(!CreateFile("demo.txt",0x20))
480 1 // return FALSE;
481 1 // if(!WriteFile(buf,1000))
482 1 // return FALSE;
483 1 // if(!CloseFile())
484 1 // return FALSE;
485 1 /////////////////////////////////////////////////////////////////////////////
486 1 //**************************************************************************
487 1 //测试三:写大批量数据
C51 COMPILER V8.08 API 04/25/2009 23:03:21 PAGE 9
488 1 // for(i=0;i<5120;i++)
489 1 // buf[i]='c';
490 1 // if(!CreateFile("demo.txt",0x20))
491 1 // return FALSE;
492 1 // for(i=0;i<5;i++)
493 1 // if(!WriteFile(buf,1000))
494 1 // return FALSE;
495 1 // if(!CloseFile())
496 1 // return FALSE;
497 1 ///////////////////////////////////////////////////////////////////////////
498 1 //**************************************************************************
499 1 //测试四:打开一个文件并在文件后面接着写上一些少量数据可以精确到到字节
500 1 //
501 1 // for(i=0;i<5120;i++)
502 1 // buf[i]='c';
503 1 // if(!OpenFile("demo.txt"))
504 1 // return FALSE;
505 1 // if(!AddWriteFile(buf,1024))
506 1 // return FALSE;
507 1 // if(!CloseFile())
508 1 // return FALSE;
509 1 /////////////////////////////////////////////////////////////////////
510 1 //**************************************************************************
511 1 //测试五:打开一个文件并在文件后面接着写上大量数据可以精确到到字节
512 1 //
513 1 // for(i=0;i<2048;i++)
514 1 // buf[i]='h';
515 1 // if(!OpenFile("demo.txt"))
516 1 // return FALSE;
517 1 // if(!AddWriteFile(buf,1024))
518 1 // return FALSE;
519 1 // for(i=0;i<2048;i++)
520 1 // buf[i]='j';
521 1 // for(i=0;i<10;i++)
522 1 // if(!WriteFile(buf,1000))
523 1 // return FALSE;
524 1 // if(!CloseFile())
525 1 // return FALSE;
526 1 //////////////////////////////////////////////////////////////////////////////
527 1 //***************************************************************************
528 1 //测试六:打开一个文件并读取数量到缓存buf
529 1 //
530 1 // if(!OpenFile("demo.txt"))
531 1 // return FALSE;
532 1 // ApiFileControl.CurrentSectorNum=ApiFileControl.StartSectorNum;
533 1 // ApiFileControl.SectorOffset=0;
534 1 // if(!ReadFile(buf,500))
535 1 // return FALSE;
536 1 //////////////////////////////////////////////////////////////////////////////
537 1 //****************************************************************************
538 1 //测试七:打开一个大文件文件并读取数量到到多个buf
539 1 //
540 1 // if(!OpenFile("demo.txt"))
541 1 // return FALSE;
542 1 // ApiFileControl.CurrentSectorNum=ApiFileControl.StartSectorNum;
543 1 // ApiFileControl.SectorOffset=0;
544 1 // if(!ReadFile(buf1,500))
545 1 // return FALSE;
546 1 // if(!ReadFile(buf2,500))
547 1 // return FALSE;
548 1 ///////////////////////////////////////////////////////////////////////////////
549 1 //****************************************************************************
C51 COMPILER V8.08 API 04/25/2009 23:03:21 PAGE 10
550 1 //测试八:显示U盘的文件,执行完后请看全局变量BuffFile里的值
551 1 // if(!DisplayFile())
552 1 // return FALSE;
553 1 ///////////////////////////////////////////////////////////////////////////
554 1 //***************************************************************************
555 1 //测试:九删除指定的文件
556 1 // if(!DelFile("demo.txt"))
557 1 // return FALSE;
558 1 ///////////////////////////////////////////////////////////////////////////////
559 1 //**************************************************************************
560 1 //测试十:创建一个目录
561 1 // if(!CreateDir("demot"))
562 1 // return FALSE;
563 1 ///////////////////////////////////////////////////////////////////////////////
564 1 //********************************************************************************
565 1 //测试十一:创建一个目录同时创建好一个空文件
566 1 // if(!CreateDir("www\\demo.txt"))
567 1 // return FALSE;
568 1 ////////////////////////////////////////////////////////////////////////////////////
569 1 //***********************************************************************************
570 1 //测试十二:创建好一个目录同时创建一个文件并写上数据
571 1 // for(i=0;i<5120;i++)
572 1 // buf[i]='c';
573 1 // if(!CreateDir("www\\demo.txt"))
574 1 // return FALSE;
575 1 // if(!WriteFile(buf,666))
576 1 // return FALSE;
577 1 // if(!CloseFile())
578 1 // return FALSE;
579 1 return TRUE;
580 1 }
581 //************************************************************************
582 //author:dragon
583 //web:8dragon.com
584 //2004.2.5完成于桃龙源
585 //*************************************************************************
586
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 5637 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = 88 5028
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
EDATA SIZE = ---- ----
HDATA SIZE = ---- ----
XDATA CONST SIZE = ---- ----
FAR CONST SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -