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