⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readflash.c

📁 READFLASH 驱动程序模块源程序
💻 C
字号:

//------------------------------------------------------------------------------
//    Revision History
//    Date                    Author                   Activity ID           Activity Headline  
//    2007-03-13	      Zhangpeifeng   CEBD200045843      	Modify Mdoc using hynix-h343
//------------------------------------------------------------------------------
#define CE_DRIVER_LAYER
#include "cedriver.h"
#include "flflash.h"

#define BT_PATA_SIZE (1*1024)
#define PARAGON_SIZE (64*1024)



BOOL  SetTime(DWORD phonetime)
{
    
   
    DWORD bytes;
    HANDLE hDsk;
    flBDKOperationInput bdk;
    FLStatus flstatus;
    BYTE *btpa = malloc(PARAGON_SIZE);
    UINT32 i;
    BYTE lpBuffer[32];
    _ultoa(phonetime,lpBuffer,10);
    
	
    bdk.partitionNumber= 1;
    bdk.type = BDK_INIT_READ;
    bdk.bdkStruct.length = PARAGON_SIZE;
    bdk.bdkStruct.flags = EDC;
    bdk.bdkStruct.oldSign[0] = 'B';
    bdk.bdkStruct.oldSign[1] = 'T';
    bdk.bdkStruct.oldSign[2] = 'P';
    bdk.bdkStruct.oldSign[3] = 'A';
    bdk.bdkStruct.startingBlock = 0;
    bdk.bdkStruct.signOffset = 8;
    
    hDsk = CreateFile(L"DSK2:", 
                      GENERIC_WRITE | GENERIC_READ,
                      0, 
                      NULL, 
                      OPEN_EXISTING, 
                      FILE_ATTRIBUTE_NORMAL, 
                      NULL);
    if (hDsk == INVALID_HANDLE_VALUE)
    {
        RETAILMSG(1, (TEXT("\nSetContent OPEN DSK2 FAILED,Error is %d"),GetLastError()));
        //return FALSE;
    }
    else
    {
        RETAILMSG(1, (TEXT("\nSetContent OPEN DSK2 SUCCESSED")));

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
            && flstatus == flOK)
        {
            RETAILMSG(1 ,(TEXT("\nSetContent BDK_INIT_READ SUCCESSED")));
            
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_READ FAILED---[0x%x]"),GetLastError()));
            //return FALSE;
        }

        bdk.type = BDK_READ;
        bdk.bdkStruct.bdkBuffer = btpa;
        bdk.bdkStruct.length = PARAGON_SIZE;
        bdk.bdkStruct.flags = ERASE_BEFORE_WRITE;

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(bdk), 
                            &flstatus, 
                            sizeof(flstatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_READ SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_READ FAILED")));
            //return FALSE;
        }

        if (hDsk != INVALID_HANDLE_VALUE)
        {
            CloseHandle(hDsk);
        }
    }
	for (i = 0; i < 32; i++)
    {
        btpa[i+BT_PATA_SIZE] = lpBuffer[i];
    }
	
	bdk.partitionNumber = 1;
    bdk.type = BDK_INIT_WRITE;
    bdk.bdkStruct.length = PARAGON_SIZE;
    bdk.bdkStruct.flags = EDC;
    bdk.bdkStruct.oldSign[0] = 'B';
    bdk.bdkStruct.oldSign[1] = 'T';
    bdk.bdkStruct.oldSign[2] = 'P';
    bdk.bdkStruct.oldSign[3] = 'A';
    bdk.bdkStruct.startingBlock = 0;
    bdk.bdkStruct.signOffset = 8;

    hDsk = CreateFile(L"DSK2:", 
                      GENERIC_WRITE | GENERIC_READ, 
                      0, 
                      NULL, 
                      OPEN_EXISTING, 
                      FILE_ATTRIBUTE_NORMAL, 
                      NULL);
    if (hDsk == INVALID_HANDLE_VALUE)
    {
        RETAILMSG(1,(TEXT("\nOPEN DSK2 FAILED")));
        //return FALSE;
    }
    else
    {
        RETAILMSG(1,(TEXT("\nOPEN DSK2 SUCCESSED")));
        RETAILMSG(1,(TEXT("\nioctl : %d bdk.type : %d, &bdk : 0x%x &(bdk.type) : 0x%x &(bdk.bdkStruct) : 0x%x"),FL_IOCTL_BDK_OPERATION,(FLByte)(bdk.type),&bdk,&(bdk.type),&(bdk.bdkStruct)));

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_WRITE SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_WRITE FAILED %d"), GetLastError()));
            //return FALSE;
        }

        bdk.type = BDK_WRITE;
        bdk.bdkStruct.bdkBuffer = btpa;
        bdk.bdkStruct.length = PARAGON_SIZE;
        bdk.bdkStruct.flags = ERASE_BEFORE_WRITE;
        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk,
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_WRITE SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_WRITE FAILED")));
            //return FALSE;
        }
        
        if (hDsk != INVALID_HANDLE_VALUE)
        {
            CloseHandle(hDsk);
        }
        
    }
	free(btpa);
	return TRUE;
	
}



DWORD  GetTime(void)
{
    
    DWORD phonetime;
    DWORD bytes;
    HANDLE hDsk;
    flBDKOperationInput bdk;
    FLStatus flstatus;
    BYTE *btpa = malloc(PARAGON_SIZE);
    UINT32 i;
    BYTE lpBuffer[32];
    
	
    bdk.partitionNumber= 1;
    bdk.type = BDK_INIT_READ;
    bdk.bdkStruct.length = PARAGON_SIZE;
    bdk.bdkStruct.flags = EDC;
    bdk.bdkStruct.oldSign[0] = 'B';
    bdk.bdkStruct.oldSign[1] = 'T';
    bdk.bdkStruct.oldSign[2] = 'P';
    bdk.bdkStruct.oldSign[3] = 'A';
    bdk.bdkStruct.startingBlock = 0;
    bdk.bdkStruct.signOffset = 8;
    
    hDsk = CreateFile(L"DSK2:", 
                      GENERIC_WRITE | GENERIC_READ,
                      0, 
                      NULL, 
                      OPEN_EXISTING, 
                      FILE_ATTRIBUTE_NORMAL, 
                      NULL);
    if (hDsk == INVALID_HANDLE_VALUE)
    {
        RETAILMSG(1, (TEXT("\nSetContent OPEN DSK2 FAILED")));
        //return FALSE;
    }
    else
    {
        RETAILMSG(1, (TEXT("\nSetContent OPEN DSK2 SUCCESSED")));

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
            && flstatus == flOK)
        {
            RETAILMSG(1 ,(TEXT("\nSetContent BDK_INIT_READ SUCCESSED")));
            
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_READ FAILED---[0x%x]"),GetLastError()));
            //return FALSE;
        }

        bdk.type = BDK_READ;
        bdk.bdkStruct.bdkBuffer = btpa;
        bdk.bdkStruct.length = PARAGON_SIZE;
        bdk.bdkStruct.flags = ERASE_BEFORE_WRITE;

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(bdk), 
                            &flstatus, 
                            sizeof(flstatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_READ SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_READ FAILED")));
            //return FALSE;
        }

        if (hDsk != INVALID_HANDLE_VALUE)
        {
            CloseHandle(hDsk);
        }
    }
	for (i = 0; i < 32; i++)
    {
         lpBuffer[i] = btpa[i+BT_PATA_SIZE];
    }
	phonetime = strtoul(lpBuffer,NULL,10);
	RETAILMSG(1,(TEXT("\nPHONE TIME IS %d"),phonetime));
	bdk.partitionNumber = 1;
    bdk.type = BDK_INIT_WRITE;
    bdk.bdkStruct.length = PARAGON_SIZE;
    bdk.bdkStruct.flags = EDC;
    bdk.bdkStruct.oldSign[0] = 'B';
    bdk.bdkStruct.oldSign[1] = 'T';
    bdk.bdkStruct.oldSign[2] = 'P';
    bdk.bdkStruct.oldSign[3] = 'A';
    bdk.bdkStruct.startingBlock = 0;
    bdk.bdkStruct.signOffset = 8;

    hDsk = CreateFile(L"DSK2:", 
                      GENERIC_WRITE | GENERIC_READ, 
                      0, 
                      NULL, 
                      OPEN_EXISTING, 
                      FILE_ATTRIBUTE_NORMAL, 
                      NULL);
    if (hDsk == INVALID_HANDLE_VALUE)
    {
        RETAILMSG(1,(TEXT("\nOPEN DSK2 FAILED")));
        //return FALSE;
    }
    else
    {
        RETAILMSG(1,(TEXT("\nOPEN DSK2 SUCCESSED")));
        RETAILMSG(1,(TEXT("\nioctl : %d bdk.type : %d, &bdk : 0x%x &(bdk.type) : 0x%x &(bdk.bdkStruct) : 0x%x"),FL_IOCTL_BDK_OPERATION,(FLByte)(bdk.type),&bdk,&(bdk.type),&(bdk.bdkStruct)));

        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk, 
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_WRITE SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_INIT_WRITE FAILED %d"), GetLastError()));
            //return FALSE;
        }

        bdk.type = BDK_WRITE;
        bdk.bdkStruct.bdkBuffer = btpa;
        bdk.bdkStruct.length = PARAGON_SIZE;
        bdk.bdkStruct.flags = ERASE_BEFORE_WRITE;
        if (DeviceIoControl(hDsk, 
                            FL_IOCTL_BDK_OPERATION, 
                            &bdk,
                            sizeof(flBDKOperationInput), 
                            &flstatus, 
                            sizeof(FLStatus),
                            &bytes, 
                            NULL) 
           && flstatus == flOK)
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_WRITE SUCCESSED")));
        }
        else
        {
            RETAILMSG(1, (TEXT("\nSetContent BDK_WRITE FAILED")));
            //return FALSE;
        }
        
        if (hDsk != INVALID_HANDLE_VALUE)
        {
            CloseHandle(hDsk);
        }
        
    }
	free(btpa);
	return phonetime;
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -