久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4861|回復: 4
收起左側

使用CreateFile讀取SD卡數據

[復制鏈接]
ID:254919 發表于 2018-7-20 22:52 | 顯示全部樓層 |閱讀模式
使用CreateFile讀取SD卡數據
SD卡沒有文件系統,通過讀取自定義寫入SD卡的開頭標志數據來檢測
  1. //#include "stdafx.h"  
  2. #include <windows.h>  
  3. #include <conio.h>  
  4. #include <stdio.h>  
  5. #include <tchar.h>  
  6. #include<string.h>
  7. #include <winioctl.h>  
  8. //#include <ntddscsi.h>  
  9.   
  10.   
  11. // òÔCreateFile·½ê½¶áè¡éèÇø¿a1Ø  
  12. #define SECTOR   

  13. char SD_Flag = 0;
  14. char Disk_Name[22] = {"\\\\.\\Physicaldrive2"};
  15. char SD_Flag_byte[2048] = {0};

  16. HANDLE hDev;

  17. char SD_judge();
  18. int SD_Read();
  19. int fire();

  20. int main (INT Argc, _TCHAR *Argv[])  
  21. {  
  22.    system("title SD¿¨êy¾Y¶áè¡3ìDò(WindowsרóÃ) lalala");
  23.     SD_judge();
  24.    // fire();
  25.     if(SD_Flag == 1)
  26.     {
  27.       SD_Read();       
  28.     }        
  29.      //printf("0x%x",EOF);
  30.      getch();
  31.         return 0;
  32. }  

  33. char SD_judge()
  34. {
  35.     int i = 0;
  36.     HANDLE hDev;
  37.         char Disk_Flag = 0;

  38. for(int a = 0; a < 6; a++)
  39. {
  40.     Disk_Name[17]=a+'0';
  41.             for(int r = 0;r<22;r++)
  42.         {
  43.                 printf("%c%",Disk_Name[r]);
  44.         }
  45.     hDev=CreateFile( Disk_Name,
  46.                          GENERIC_READ,
  47.                                          FILE_SHARE_WRITE,
  48.                                          0,
  49.                                          OPEN_EXISTING,
  50.                                          0,
  51.                                          0);  
  52.     if (hDev == INVALID_HANDLE_VALUE)  
  53.     {  
  54.         printf("CreatFile Error  ");  
  55.         DWORD ret = GetLastError();  
  56.         printf("CreateFile code%x  ",ret);   
  57.     }
  58.    
  59.     int j;
  60.         char Flag_byte[5] = {0x3c,0x53,0x44,0x43,0x3e};   

  61.     DWORD dwRet_Flag = 0;  
  62.     ReadFile(hDev,SD_Flag_byte,512,&dwRet_Flag,0);  
  63.     if (dwRet_Flag < 0)  
  64.     {  
  65.         printf("ReadFile Error\n");  
  66.         DWORD ret = GetLastError();  
  67.         printf("CreateFile code%x\n",ret);   
  68.     }  

  69.     for(j=0; j<5; j++)  //¼ì2aSD¿¨í·ËÄλ±êÖ¾
  70.     {  
  71.        printf("%x    " ,SD_Flag_byte[j]);
  72.        if(SD_Flag_byte[j] == Flag_byte[j])
  73.              Disk_Flag++;  
  74.     }
  75.     if(Disk_Flag != 5)
  76.     {
  77.        CloseHandle(hDev);
  78.            printf("¸Ã′ÅÅì2»êÇSD¿¨\n");           
  79.     }
  80.     else
  81.     {
  82.       printf("¼ì2aμ½SD¿¨\n");
  83.       SD_Flag = 1;
  84.       CloseHandle(hDev);
  85.       return 1;            
  86.     }
  87.         if((a == 5)&&(Disk_Flag != 5))
  88.           {
  89.               printf("SD¿¨Î′2åèë\n");
  90.                 return 0;       
  91.       }
  92.   }
  93. }

  94. //  
  95. int SD_Read()
  96. {
  97.        
  98. //        char ad[8]={0x4e,0x28,0x00,0x00,0x15,0x00,0x00,0x00};
  99. //        printf("%d\n%d\n%d", *(signed int *)ad, *(signed int *)(ad+4), *(signed int *)&ad[4]);
  100.        
  101.     int Byte_num = 0;
  102.     char a[512] = {0};
  103.     DWORD dwRet_Flag = 0;
  104.     char Flag_byte[5] = {0x3c,0x53,0x44,0x43,0x3e};
  105.           
  106.     FILE *fp;
  107.     fp = fopen("SD_data.dat","wb");
  108.    
  109.     fwrite(Flag_byte,sizeof(char),5,fp); //qqqqqqqqqq

  110.            for(int r = 0;r<20;r++)
  111.         {
  112.                 printf("%c",Disk_Name[r]);
  113.                
  114.         }
  115.         printf("\n");
  116.     dwRet_Flag = 0;
  117.                 
  118.     hDev=CreateFile( Disk_Name,
  119.                          GENERIC_READ,
  120.                                          FILE_SHARE_WRITE,
  121.                                          0,
  122.                                          OPEN_EXISTING,
  123.                                          0,
  124.                                          0);  
  125.     if (hDev == INVALID_HANDLE_VALUE)  
  126.     {  
  127.         printf("CreatFile Error\n");  
  128.         DWORD ret = GetLastError();  
  129.         printf("CreateFile code%x\n",ret);  
  130.                 return 0;
  131.     }
  132.     ReadFile(hDev,a,512,&dwRet_Flag,0);
  133.     for(int t=0; t< 20; t++)  
  134.     {  
  135.         printf("%x    " ,a[t]);
  136.     }
  137.     printf("\n");
  138.     int data_size = *(signed int *)&a[8];
  139.         int data_block = *(signed int *)&a[12];
  140.         int data_count = *(signed int *)&a[16];  
  141.         printf("data_size:%d\ndata_block:%d\ndata_count:%d\n", data_size, data_block, data_count);
  142.     printf("\n");
  143.    
  144.     Byte_num = data_block*512;
  145.     char *buffer=(char *)malloc(Byte_num);
  146.    
  147.    if (dwRet_Flag < 0)  
  148.     {  
  149.         printf("ReadFile Error\n");  
  150.         DWORD ret = GetLastError();  
  151.         printf("CreateFile code%x\n",ret);
  152.                 return 0;  
  153.     }
  154.         printf("ÕyÔú¶áè¡¡£¡£¡£¡£\n");          
  155.     for(int x = 0;x < data_count;x++)  //¶áè¡êy¾Y
  156.          {  
  157.            //fwrite(0,sizeof(int),1,fp);
  158.            fwrite((char *)&data_size,sizeof(int),1,fp);
  159.            ReadFile(hDev,buffer,Byte_num,&dwRet_Flag,0);
  160.            fwrite(buffer,sizeof(char),data_size,fp);
  161.                    printf("\rÇëμè′y %d", x);       
  162.            
  163.       }
  164.     //fclose(fp);

  165.     char b[4] = {0,0,0,0};
  166.     fwrite(b,sizeof(char),4,fp);
  167.     //fwrite(b,sizeof(b[0]),strlen(b),fp);
  168.      CloseHandle(hDev);
  169.       fclose(fp);
  170.      printf("  ¶áè¡íê3飡\n");
  171.          free(buffer);
  172. }        

復制代碼

SD卡
回復

使用道具 舉報

ID:277550 發表于 2018-7-20 23:34 | 顯示全部樓層
CTRL+C
CTRL+V
編碼不對,造成

里面的中文字,全亂碼了



~~~~~~~~~~~~~~
回復

使用道具 舉報

ID:1 發表于 2018-7-20 23:42 | 顯示全部樓層
最好傳個壓縮包
回復

使用道具 舉報

ID:524389 發表于 2019-4-29 13:38 | 顯示全部樓層
devcang 發表于 2018-7-20 23:34
CTRL+C
CTRL+V
編碼不對,造成

樓主,請問一下 char Flag_byte[5] = {0x3c,0x53,0x44,0x43,0x3e};中的0x3c,0x53,0x44,0x43,0x3e表示什么意思?謝謝
回復

使用道具 舉報

ID:524389 發表于 2019-4-29 13:43 | 顯示全部樓層
樓主,請問一下char Flag_byte[5] =  {0x3c,0x53,0x44,0x43,0x3e};     0x3c,0x53,0x44,0x43,0x3e表示什么意思?謝謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区二区三区四区 | 欧美一级全黄 | 久久久久网站 | 91人人澡人人爽 | 国产精品美女久久久久久久久久久 | 天天天操操操 | 亚洲成人精品国产 | 成人一区二区视频 | 久久高清精品 | 欧美一级视频在线观看 | 国产成人高清视频 | av二区三区| 欧美日韩国产精品一区 | 国产欧美日韩一区二区三区在线观看 | 成人在线精品视频 | 99国内精品久久久久久久 | 欧美视频免费 | 午夜影院在线播放 | wwwxxx日本在线观看 | 精品欧美一区免费观看α√ | 色黄爽 | 一区二区三区精品 | 中文字幕乱码视频32 | 夜夜夜夜草 | 久久综合一区 | 又爽又黄axxx片免费观看 | 国产精品日韩一区二区 | 亚洲第1页 | 国产亚洲精品一区二区三区 | 中文字幕第一页在线 | 国产在线观看 | 99久久精品免费看国产四区 | 久在线 | 国产乱码一二三区精品 | 久久成人午夜 | 国产精品久久久久久一区二区三区 | 国产精品99久久久久久久vr | 国产精品99免费视频 | 国产精品三级 | 天天插天天操 | 国产sm主人调教女m视频 |