亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? system.c

?? 6410BSP3
?? C
?? 第 1 頁 / 共 5 頁
字號:
    static UINT nAccessCnt = 0;

    BIBDRV_LOG_PRINT((TEXT("[BIBDRV: IN] ++DoDiskRead()\r\n")));

/*
typedef struct _SG_REQ {
    DWORD sr_start;     // starting sector number
	DWORD sr_num_sec;   // number of sectors
	DWORD sr_num_sg;    // number of scatter/gather buffers
    DWORD sr_status;    // request status
    PFN_REQDONE sr_callback;  // request completion callback function
	SG_BUF sr_sglist[1];   // first scatter/gather buffer
} SG_REQ, * PSG_REQ;
*/

    pSgr = (PSG_REQ) pData;

    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  ========= DoDiskRead Request Info ========= \r\n")));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSgr->sr_start    = %d(0x%x)\r\n"), pSgr->sr_start, pSgr->sr_start));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSgr->sr_num_sec  = %d\r\n"),       pSgr->sr_num_sec));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSgr->sr_num_sg   = %d\r\n"),       pSgr->sr_num_sg));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tlast sector num   = %d\r\n"),       pSgr->sr_start + pSgr->sr_num_sec - 1));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSgr->sr_status   = 0x%x\r\n"),     pSgr->sr_status));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  =========================================== \r\n")));
    
    /* BML Open Check */
    if (pDisk->bIsBMLOpen == FALSE)
    {
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  pDisk BML Open Check Fail\r\n")));
        status = ERROR_INVALID_PARAMETER;
        goto ddi_exit;
    }

    /* Scatter/Gather buffer Bound Check */
    if (pSgr->sr_num_sg > MAX_SG_BUF)
    {
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  Scatter/Gather buffer Bound Check Fail (Too many buffers)\r\n")));
        status = ERROR_INVALID_PARAMETER;
        goto ddi_exit;
    }

    pSgr->sr_status = ERROR_IO_PENDING;

    /*----------------------------------------------*/
    // Make sure request doesn't exceed the disk    */
    /*----------------------------------------------*/
    if ((pSgr->sr_start + pSgr->sr_num_sec - 1) > pDisk->d_DiskInfo.di_total_sectors)
    {
        status = ERROR_SECTOR_NOT_FOUND;
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  Request Sector OOB Check Fail(sector exceeded)\r\n")));
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  - Disk Totol Sectors        = %d\r\n"), pDisk->d_DiskInfo.di_total_sectors));
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  - Requested pSgr->sr_start  = %d\r\n"), pSgr->sr_start));
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  - Requested pSgr->sr_num_sec= %d\r\n"), pSgr->sr_num_sec));
        BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR]  - Requested last sector num = %d\r\n"), pSgr->sr_start + pSgr->sr_num_sec - 1));

        goto ddi_exit;
    }

    status          = ERROR_SUCCESS;
    num_sg          = pSgr->sr_num_sg;
    pSg             = &(pSgr->sr_sglist[0]);
    bytes_this_sg   = pSg->sb_len;
    pBuf            = MapPtrToProcess((LPVOID)pSg->sb_buf, GetCallerProcess());

    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  ----------------------------------- \r\n")));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tnum_sg        = %d\r\n"),     num_sg));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSg           = 0x%08x\r\n"), pSg));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tbytes_this_sg = %d\r\n"),     bytes_this_sg));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpSg->sb_buf   = 0x%08x\r\n"), pSg->sb_buf));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  \tpBuf          = 0x%08x\r\n"), pBuf));
    BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF]  ----------------------------------- \r\n")));

    EnterCriticalSection(&(pDisk->d_DiskCardCrit));

    /*--------------------------*/
    /* Read sectors from disk.  */
    /*--------------------------*/
    while (num_sg)
    {
        nSecCount = ((bytes_this_sg - 1) / pDisk->d_DiskInfo.di_bytes_per_sect) + 1;
        BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF] DoDiskRead StartSector=%d, nNumOfScts=%d, nAccessCnt=%d\r\n"),
                        pSgr->sr_start, nSecCount, nAccessCnt++));

#if defined(_READ_PERFORMANCE_MEASUREMENT_)
        WatchTimerStart();
#endif  //(_READ_PERFORMANCE_MEASUREMENT_)

        for (nSecIdx = 0; nSecIdx < nSecCount; nSecIdx ++)
        {
            BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF] DoDiskRead %d bytes at sector %d\r\n"),
                            bytes_this_sg, pSgr->sr_start + nSecIdx));

            /*----------------------*/
            /* Sector(512byte) Read */
            /*----------------------*/
            nRes = RequestReadSecToHAL(pDisk, (UINT)pSgr->sr_start + nSecIdx, pBuf);

            if (nRes != TRUE)
            {
                BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR][DoDiskRead] %5d bytes at sector %5d, num_sg = %d\r\n"),
                                bytes_this_sg, pSgr->sr_start, num_sg));

                status = ERROR_SECTOR_NOT_FOUND;
                goto ddi_req_done;
            }

            pBuf += pDisk->d_DiskInfo.di_bytes_per_sect;
        }
        
#if defined(_READ_PERFORMANCE_MEASUREMENT_)
        WatchTimerStop();
#endif  //(_READ_PERFORMANCE_MEASUREMENT_)      

        //
        // Use the next scatter/gather buffer
        //
        num_sg --;
        if (num_sg == 0)
        {
            break;
        }

        pSg ++;

        pBuf = MapPtrToProcess((LPVOID)pSg->sb_buf, GetCallerProcess());
        bytes_this_sg = pSg->sb_len;
    }   // while sg

ddi_req_done:
    LeaveCriticalSection(&(pDisk->d_DiskCardCrit));

ddi_exit:

    pSgr->sr_status = status;

    BIBDRV_LOG_PRINT((TEXT("[BIBDRV:OUT] --DoDiskRead()\r\n")));

    return status;
}

#if defined(_BIBDRV_CACHING_SECTORS_)

/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      DoDiskReadWithCaching                                                */
/* DESCRIPTION                                                               */
/*      Do read operation from NAND flash memory                             */
/* PARAMETERS                                                                */
/*      pDisk       BIBDRV_PS driver own structure pointer                    */
/*      pData       PSQ_REQ structure pointer,it contains request information*/
/*                  for read operations                                      */
/* RETURN VALUES                                                             */
/*      If it successes, it returns TRUE. otherwize it returns FALSE         */
/*                                                                           */
/*****************************************************************************/
static DWORD
DoDiskReadWithCaching(PDISK pDisk,
                      PVOID pData)
{
    DWORD   status = ERROR_SUCCESS;
    DWORD   num_sg;
    DWORD   bytes_this_sg;
    PSG_REQ pSgr;
    PSG_BUF pSg;
    PUCHAR  pBuf;
    BOOL    nRes;
    UINT    nSecCount, nSecIdx;
    static UINT nAccessCnt = 0;


    /* BML Open Check */
    if (pDisk->bIsFDMOpen == FALSE)
    {
        status = ERROR_INVALID_PARAMETER;
        goto ddi_exit;
    }

    /* Scatter/Gather buffer Bound Check */
    pSgr = (PSG_REQ)pData;
    if (pSgr->sr_num_sg > MAX_SG_BUF)
    {
        status = ERROR_INVALID_PARAMETER;
        goto ddi_exit;
    }

    pSgr->sr_status = ERROR_IO_PENDING;

    //
    // Make sure request doesn't exceed the disk
    //
    if ((pSgr->sr_start + pSgr->sr_num_sec - 1) > pDisk->d_DiskInfo.di_total_sectors)
    {
        status = ERROR_SECTOR_NOT_FOUND;
        
        BIBDRV_ERR_PRINT((TEXT("[DoDiskRead] not found at sector = %d sec_num = %d\r\n"),
                        pSgr->sr_start, pSgr->sr_num_sec));

        BIBDRV_ERR_PRINT((TEXT("[DoDiskRead] di_total_sectors = %d\r\n"), pDisk->d_DiskInfo.di_total_sectors));

        goto ddi_exit;
    }

    status          = ERROR_SUCCESS;
    num_sg          = pSgr->sr_num_sg;
    pSg             = &(pSgr->sr_sglist[0]);
    bytes_this_sg   = pSg->sb_len;
    pBuf            = MapPtrToProcess((LPVOID)pSg->sb_buf, GetCallerProcess());

    BIBDRV_INF_PRINT((TEXT("[DoDiskRead] %5d bytes at sector %5d, num_sg = %d\r\n"),
                    bytes_this_sg, pSgr->sr_start, num_sg));

    EnterCriticalSection(&(pDisk->d_DiskCardCrit));
    //
    // Read sectors from disk.
    //
    while (num_sg)
    {
        nSecCount = ((bytes_this_sg - 1) / pDisk->d_DiskInfo.di_bytes_per_sect) + 1;
        BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF] Read StartSector=%d, nNumOfScts=%d, nAccessCnt=%d\r\n"),
                        pSgr->sr_start, nSecCount, nAccessCnt++));
                            
#if defined(_READ_PERFORMANCE_MEASUREMENT_)
        WatchTimerStart();
#endif  //(_READ_PERFORMANCE_MEASUREMENT_)

        for (nSecIdx = 0; nSecIdx < nSecCount; nSecIdx ++)
        {
            BIBDRV_INF_PRINT((TEXT("[BIBDRV:INF] DoDiskRead %d bytes at sector %d\r\n"),
                            bytes_this_sg, pSgr->sr_start + nSecIdx));

            /*----------------------*/
            /* Sector(512byte) Read */
            /*----------------------*/
            nRes = RequestReadSecToHALwithCaching(pDisk, (UINT) pSgr->sr_start + nSecIdx, pBuf);

            if (nRes != TRUE)
            {
                BIBDRV_ERR_PRINT((TEXT("[BIBDRV:ERR][DoDiskReadWithCaching] %5d bytes at sector %5d, num_sg = %d\r\n"),
                                bytes_this_sg, pSgr->sr_start, num_sg));

                status = ERROR_SECTOR_NOT_FOUND;
                goto ddi_req_done;
            }

            pBuf += pDisk->d_DiskInfo.di_bytes_per_sect;
        }
        
#if defined(_READ_PERFORMANCE_MEASUREMENT_)
        WatchTimerStop();
#endif  //(_READ_PERFORMANCE_MEASUREMENT_)      

        //
        // Use the next scatter/gather buffer
        //
        num_sg --;
        if (num_sg == 0)
        {
            break;
        }

        pSg ++;

        pBuf = MapPtrToProcess((LPVOID)pSg->sb_buf, GetCallerProcess());
        bytes_this_sg = pSg->sb_len;
    }   // while sg

ddi_req_done:
    LeaveCriticalSection(&(pDisk->d_DiskCardCrit));

ddi_exit:
    pSgr->sr_status = status;
    return status;
}

#endif //(_BIBDRV_CACHING_SECTORS_)

/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      GetDiskInfo                                                          */
/* DESCRIPTION                                                               */
/*      Get disk information from pDisk structure                            */
/* PARAMETERS                                                                */
/*      pDisk       BIBDRV_PS driver own structure pointer                    */
/*      pInfo       DISK Information structure pointer                       */
/* RETURN VALUES                                                             */
/*      it always returns ERROR_SUCCESS                                      */
/*                                                                           */
/*****************************************************************************/
static DWORD
GetDiskInfo(PDISK       pDisk,
            PDISK_INFO  pInfo)
{    
    BIBDRV_LOG_PRINT((TEXT("[BIBDRV: IN] ++GetDiskInfo()\r\n")));

    memcpy(pInfo, &(pDisk->d_DiskInfo), sizeof(DISK_INFO));
    pInfo->di_flags &= ~DISK_INFO_FLAG_UNFORMATTED;
    

    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_total_sectors    =%d\r\n"), pInfo->di_total_sectors));
    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_bytes_per_sect   =%d\r\n"), pInfo->di_bytes_per_sect));
    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_cylinders        =%d\r\n"), pInfo->di_cylinders));
    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_heads            =%d\r\n"), pInfo->di_heads));
    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_sectors          =%d\r\n"), pInfo->di_sectors));
    BIBDRV_INF_PRINT((TEXT("[NFALT:INF] \tpInfo->di_flags            =%X\r\n"), pInfo->di_flags));

    /*
    The device supports demand paging.
    Read and write requests are synchronous and do not involve
    memory manager calls, loader operations, or thread switches.
    pInfo->di_flags |= DISK_INFO_FLAG_PAGEABLE;
    */

    /*
    The device does not support CHS addressing;
    values for di_cylinders, di_heads, and di_sectors may be simulations,
    estimations, or not provided.

    pInfo->di_flags |= DISK_INFO_FLAG_CHS_UNCERTAIN;
    */

    /*
    The device requires a low-level format with the IOCTL_DISK_FORMAT_MEDIA.
    The FAT file system currently ignores this flag.
    */

    BIBDRV_LOG_PRINT((TEXT("[BIBDRV:OUT] --GetDiskInfo()\r\n")));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区五区视频在线观看| 国产一本一道久久香蕉| 色婷婷久久综合| 国产精品麻豆网站| av一区二区三区在线| 亚洲精品中文字幕在线观看| 日本国产一区二区| 日韩精品亚洲一区二区三区免费| 91精品国产综合久久精品性色| 麻豆91小视频| 国产精品网曝门| 色哟哟国产精品| 天堂成人免费av电影一区| 日韩免费在线观看| 成熟亚洲日本毛茸茸凸凹| 亚洲欧美日韩人成在线播放| 欧美日韩一区 二区 三区 久久精品| 日韩电影一区二区三区四区| 久久综合给合久久狠狠狠97色69| 成人性生交大片免费看中文网站| 一区二区三区在线观看网站| 91麻豆精品国产自产在线观看一区 | 日韩一区二区高清| 国产精品小仙女| 樱花草国产18久久久久| 精品日韩欧美一区二区| 99精品在线观看视频| 日本美女一区二区| 国产精品久久网站| 欧美日韩精品电影| 国产成人亚洲综合色影视| 一区二区成人在线| 久久九九久久九九| 欧美日韩免费视频| 国产 日韩 欧美大片| 天天综合天天做天天综合| 欧美极品aⅴ影院| 欧美精品aⅴ在线视频| 成人一区二区三区视频在线观看| 亚洲国产日产av| 亚洲国产精品成人综合色在线婷婷 | 三级久久三级久久久| 欧美国产精品专区| 91精品国产综合久久香蕉麻豆 | 国产精品素人视频| 欧美一区二区大片| 99re视频这里只有精品| 久久99热这里只有精品| 亚洲国产裸拍裸体视频在线观看乱了 | 中文在线一区二区| 日韩一区二区三免费高清| 色综合天天性综合| 国产精品综合二区| 免费高清在线一区| 亚洲高清免费视频| 亚洲欧美日韩在线| 中文字幕av在线一区二区三区| 欧美区在线观看| 色婷婷av一区二区| 欧美一区日本一区韩国一区| 色婷婷久久久综合中文字幕| 成人激情小说乱人伦| 国产美女主播视频一区| 毛片av一区二区三区| 天堂一区二区在线| 亚洲成人av福利| 亚洲精品国产高清久久伦理二区| 国产精品国产精品国产专区不蜜 | 欧美伊人精品成人久久综合97| 成人一道本在线| 国产精品自在在线| 精品在线免费视频| 久久精品国产久精国产| 免费人成精品欧美精品| 日韩高清不卡一区二区| 视频一区二区中文字幕| 五月天亚洲精品| 午夜电影网一区| 日本欧美一区二区三区| 丝袜诱惑制服诱惑色一区在线观看| 亚洲第一在线综合网站| 亚洲精品日产精品乱码不卡| 一区二区三区在线视频观看 | 国产一区二三区| 国产一区在线不卡| 国产伦精一区二区三区| 国产传媒久久文化传媒| 国产不卡高清在线观看视频| 成人中文字幕电影| 99精品国产热久久91蜜凸| 91九色最新地址| 欧美日韩在线播放三区四区| 91.com在线观看| 精品乱人伦小说| 欧美经典三级视频一区二区三区| 国产精品久久久久精k8| 亚洲免费色视频| 亚洲va韩国va欧美va精品| 美女视频第一区二区三区免费观看网站| 日韩电影一区二区三区| 精品一区二区三区久久久| 国产v综合v亚洲欧| 91国产成人在线| 欧美一级高清片在线观看| 久久精品水蜜桃av综合天堂| 亚洲视频一区二区在线观看| 亚洲无人区一区| 激情综合亚洲精品| 99久久综合国产精品| 欧美三区在线视频| 欧美变态tickling挠脚心| 欧美激情一区三区| 亚洲123区在线观看| 国内精品视频666| av福利精品导航| 日韩三级免费观看| 中文字幕一区二区三区不卡在线| 亚洲高清不卡在线| 国产经典欧美精品| 欧美吻胸吃奶大尺度电影 | 国产精品综合二区| 欧美亚洲一区二区在线观看| 精品va天堂亚洲国产| 亚洲精品欧美二区三区中文字幕| 奇米在线7777在线精品 | 亚洲免费资源在线播放| 美女精品一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 91精品在线观看入口| 亚洲天堂中文字幕| 国产一区视频在线看| 欧美精品乱人伦久久久久久| 中文字幕一区二区三中文字幕| 免费亚洲电影在线| 在线一区二区三区| 国产精品全国免费观看高清| 日韩和欧美一区二区三区| 99re这里只有精品6| 久久先锋影音av| 日韩国产成人精品| 欧美在线视频不卡| 国产精品福利一区| 国产99久久久国产精品潘金| 欧美一区午夜精品| 亚洲成人精品影院| 色婷婷综合视频在线观看| 久久久久久久久99精品| 美女精品一区二区| 欧美日韩一区二区三区免费看| 国产精品成人免费在线| 国产精品亚洲视频| 精品久久久久久久久久久久久久久 | 中文字幕乱码日本亚洲一区二区| 七七婷婷婷婷精品国产| 欧美日本精品一区二区三区| 亚洲精品你懂的| aaa欧美日韩| 亚洲视频一区在线| 97久久超碰精品国产| 国产精品美女一区二区三区| 国产盗摄精品一区二区三区在线| 精品三级在线观看| 美国十次综合导航| 51精品久久久久久久蜜臀| 午夜精品久久久久影视| 欧美色国产精品| 午夜久久久久久久久| 欧美日韩一区二区在线观看视频 | 欧美日韩视频在线第一区 | 欧美视频日韩视频| 亚洲无线码一区二区三区| 欧美性大战xxxxx久久久| 亚洲一区二区三区四区五区黄 | 欧美一区二区免费| 日本一道高清亚洲日美韩| 日韩亚洲电影在线| 精品写真视频在线观看 | 欧美无人高清视频在线观看| 亚洲国产视频一区二区| 欧美挠脚心视频网站| 日韩成人免费看| 精品三级在线看| 国产成人av电影在线| 国产精品天美传媒沈樵| 91免费版在线| 亚洲大片一区二区三区| 91精品国产91久久久久久最新毛片 | 日韩成人精品在线观看| 日韩写真欧美这视频| 国产精品中文字幕日韩精品| 国产蜜臀av在线一区二区三区| 99久久精品国产导航| 亚洲综合无码一区二区| 日韩一级免费一区| 国产不卡高清在线观看视频| 亚洲视频中文字幕| 欧美一区二区三区四区视频| 黑人巨大精品欧美一区| 亚洲人成影院在线观看| 91精品婷婷国产综合久久|