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

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

?? fatfilt.c

?? M-System DOC(Disk on a Chip) Flash芯片的診斷工具, 可以從Flash芯片中獲取特定的數據信息, 用于判斷芯片當前的狀態.
?? C
?? 第 1 頁 / 共 4 頁
字號:
            ioreq.irHandle      = pv->handle;
            ioreq.irSectorNo    = iSec;
            ioreq.irSectorCount = pv->clusterSize;
            checkStatus( flAbsDelete(&ioreq) );
        }
    }

    return flOK;
}

#endif /* FL_INCLUDE_FAT_MONITOR */




/* --------------------------------------------------------------------------- *
 *                                                                             *
 *                   f f C h e c k B e f o r e W r i t e                       *
 *                                                                             *
 *  Catch all the FAT updates. Detect disk partitioning operation, track it    *
 *  to completion, re-read partition tables, and re-install FAT filters on     *
 *  all FAT12/16 partitions.                                                   *
 *                                                                             *
 *  Parameters:                                                                *
 *      ioreq              : standard I/O request to be checked                   *
 *                                                                             *
 *  Returns:                                                                   *
 *      flOK on success, otherwise error code                                  *
 *                                                                             *
 * --------------------------------------------------------------------------- */

FLStatus  ffCheckBeforeWrite ( IOreq FAR2 * ioreq )
{
    int         socNo, diskNo;
    FLffDisk  * pd;
    FLffVol   * pv;
    FLSDword    iSec;
    int         iPart;
    IOreq       ioreq2;
    FLSByte FAR1 * usrBuf;

    /* if module hasn't been reset yet, do it now */

    if (resetDone == FALSE)
        (void) reset();

    /* break TFFS handle into socket# and disk#, and do sanity check */

    socNo  = H2S(ioreq->irHandle);
    diskNo = H2D(ioreq->irHandle);
 
    if ((socNo >= ((int) noOfSockets)) || (diskNo >= FL_MAX_TL_PARTITIONS))
        return flBadDriveHandle;

    /* if disk structure hasn't been allocated yet, do it now */

    if (ffDisk[socNo][diskNo] == NULL)
        checkStatus( newDisk((int)ioreq->irHandle) );

    pd = ffDisk[socNo][diskNo];

    /* read partition table(s) and install FAT filters is needed */

    if (pd->ffstate == flStateNotInitialized)
        checkStatus( parseDisk((int)ioreq->irHandle) );

    /* catch writes to MBR, and track the whole disk partitioning operations */

    while( isPartTableWrite(pd, ioreq) == TRUE ) {

        /* disk re-partitioning is in progress */

        if( pd->secToWatch == (SectorNo)0 ) {

            /* it's write to MBR, so trash BPBs in all disk's partitions */

            if (pd->parts > 0) {

                for (iPart = 0;  iPart < pd->parts;  iPart++) {

                    ioreq2.irHandle      = ioreq->irHandle;
                    ioreq2.irSectorNo    = (pd->part[iPart])->startSecNo;
                    ioreq2.irSectorCount = (SectorNo) 1;
                    ioreq2.irData        = (void FAR1 *) zeroes;
                    (void) flAbsWrite(&ioreq2);
        }
        }
        }

        /* keep FAT filters disabled while disk partitioning is in progress */

        pd->ffstate = flStateInitInProgress;

        /* partition table which is about to be written to disk */

        usrBuf = FLBUF( ioreq, (pd->secToWatch - ioreq->irSectorNo) );

        switch( isExtPartPresent(usrBuf, &(pd->secToWatch)) ) {

            case flOK: 

                /* 
                 * Found valid partition table with extended partition.
                 * The pd->secToWatch has been updated to point to the
                 * sector where next partition table will be written to. 
                 */
                continue;

            case flFileNotFound:

                /* 
                 * Valid partition table, but no extended partition in it. 
                 * Partitioning has been completed. Set pd->ffstate to 
                 * 'flStateNotInitialized' to initiate parsing of partition
                 * table(s) and FAT filter installation next time this routine
                 * is called. 
                 */

                pd->ffstate = flStateNotInitialized;
                break;

            case flBadFormat:
        default:

                /* No valid partition table. */

                break;
        }

        return flOK;
    }

#ifdef FL_INCLUDE_FAT_MONITOR

    /* check for FAT update */

    if (pd->ffstate == flStateInitialized) {

        /* NOTE: We can handle 'write' request that spans disk partition boundaries */

        for (iSec = ioreq->irSectorNo; 
             iSec < (ioreq->irSectorNo + ioreq->irSectorCount); iSec++) {

            for (iPart = 0; iPart < pd->parts; iPart++) {

                pv = pd->part[iPart];

                /* we monitor only FAT12/16 partitions */

                if ((pv->type != FAT12_PARTIT) && (pv->type != FAT16_PARTIT) && 
                                                  (pv->type != DOS4_PARTIT))
            continue;

                /* FAT filters can be disabled on individual partitions */

                if (pv->ffEnabled != TRUE)
                    continue;

                if (iSec == (FLSDword)pv->startSecNo) {

		    /* partition's boot sector is being updated */

                    usrBuf = FLBUF( ioreq, (iSec - ioreq->irSectorNo) );

  		    if( isBPBchanged(pv, usrBuf) == TRUE ) {

		        /* 
                         * Critical fields in partition's boot sector have been changed.
                         * Turn off FAT monitor on this partition.
                         */

		        pv->ffEnabled = FALSE;

                        DBG_PRINT_FLOW(FLZONE_FS,"Debug: (ffCheckBeforeWrite) BPB update detected.\r\n");
                        continue;
		    } 
		}

                if ((iSec >= (FLSDword)pv->firstFATsecNo) && (iSec <= (FLSDword)pv->lastFATsecNo)) {

                    /* compare new and old contents of FAT sectors(s) */

                    usrBuf = FLBUF( ioreq, (iSec - ioreq->irSectorNo) );

                    checkStatus( partFreeDelClusters(pv, iSec, usrBuf) ); 
            }
            }
        }
    }

#endif /* FL_INCLUDE_FAT_MONITOR */

    return flOK;
}




/* --------------------------------------------------------------------------- *
 *                                                                             *
 *                   f l f f C o n t r o l                                     *
 *                                                                             * 
 *  Enable/disable/install FAT filters. See comments inside the routine for    * 
 *  the list of supported operations.                                          * 
 *                                                                             * 
 *  Parameters:                                                                * 
 *    handle         : TFFS handle                                          * 
 *      partNo             : partition # (0 .. FL_MAX_PARTS_PER_DISK)             * 
 *      state              : see list of supported operations below               * 
 *                                                                             * 
 *  Returns:                                                                   * 
 *      flOK on success, otherwise error code                                  * 
 *                                                                             * 
 * --------------------------------------------------------------------------- *
 *                                                                             *
 *  The following FAT monitor control requests are supported:                  *
 *                                                                             *
 *      state  : flStateNotInitialized                                         *
 *      partNo : [0 ... pd->parts-1]                                           *
 *      action : turn off FAT monitor on specified partition                   *
 *                                                                             *
 *      state  : flStateNotInitialized                                         *
 *      partNo : < 0                                                           *
 *      action : turn off FAT monitor on all partitions                        *
 *                                                                             *
 *      state  : flStateInitialized                                            *
 *      partNo : [0 ... pd->parts-1]                                           *
 *      action : if FAT monitor has been installed on specified partition,     *
 *               turn it on                                                    *
 *                                                                             *
 *      state  : flStateInitInProgress                                         *
 *      partNo : ignored                                                       *
 *      action : re-read partition table(s), and install FAT filters on all    *
 *               partitions                                                    *
 *                                                                             *
 * --------------------------------------------------------------------------- */

FLStatus  flffControl ( int      handle,
                        int      partNo, 
                        FLState  state )
{
    int        socNo, diskNo;
    FLffDisk * pd;
    int        i;
    FLStatus   status;

    /* if module hasn't been reset yet, do it now */

    if (resetDone == FALSE)
        (void) reset();

    /* break TFFS handle into socket# and disk#, and do sanity check */

    socNo  = H2S(handle);
    diskNo = H2D(handle);
 
    if ((socNo >= ((int) noOfSockets)) || (diskNo >= FL_MAX_TL_PARTITIONS))
        return flBadDriveHandle;

    /* if disk structure hasn't been allocated yet, do it now */

    if (ffDisk[socNo][diskNo] == NULL)
        checkStatus( newDisk(handle) );

    pd = ffDisk[socNo][diskNo];

    /* abort if disk re-partitioning is in progress */

    if (pd->ffstate == flStateInitInProgress)
        return flDriveNotReady;

    /* read partition table(s) and install FAT filters is needed */

    if (pd->ffstate == flStateNotInitialized) {

        if (state == flStateNotInitialized)
          return flOK;

        checkStatus( parseDisk(handle) );
    }

    /* check 'partNo' arguement for sanity */
 
    if ((partNo >= pd->parts) || (partNo >= FL_MAX_PARTS_PER_DISK))
        return flBadDriveHandle;

    /* do requested operation */

    status = flBadParameter;

    switch (state) {

        case flStateInitInProgress: 

            /* read partition table(s), install FAT filters on all partitions */

        pd->ffstate = flStateNotInitialized; 
            status = parseDisk(handle);
            break;

        case flStateNotInitialized:         

            /* turn off FAT monitor */

        if (partNo < 0) {                      /* all partitions */

            for (i = 0; i < FL_MAX_PARTS_PER_DISK; i++) {

            if (pd->part[i] != NULL)
                    (pd->part[i])->ffEnabled = FALSE;
        }
        }
        else {                                 /* specified partition */

        if (pd->part[partNo] != NULL)
                (pd->part[partNo])->ffEnabled = FALSE;
        }
            status = flOK;
            break;

#ifdef FL_INCLUDE_FAT_MONITOR

        case flStateInitialized:            

            /* turn on FAT monitor */

        if ((pd->ffstate == flStateInitialized) && (partNo >= 0)) {

            if (pd->part[partNo] != NULL) {

                switch( (pd->part[partNo])->type ) {

                        case FAT12_PARTIT:
                    case FAT16_PARTIT:
                    case DOS4_PARTIT:
                        (pd->part[partNo])->ffEnabled = TRUE;
                            status = flOK;
                            break;

            case FL_RAW_PART:
                            DBG_PRINT_ERR(FLZONE_FS,"ERROR - can't ctrl non-existent partition.\r\n");
                            break;

            default:
                            DBG_PRINT_ERR(FLZONE_FS,"ERROR - can't ctrl non-FAT12/16 partition.\r\n");
                            break;
            }
        }
        }
            break;

#endif /* FL_INCLUDE_FAT_MONITOR */

    }  /* switch(state) */ 

    return status;
}




/* --------------------------------------------------------------------------- *
 *                                                                             *
 *                   f l f f I n f o                                           *
 *                                                                             * 
 *  Obtain complete partition info for specified disk.                         *
 *                                                                             * 
 *  Parameters:                                                                * 
 *    handle         : TFFS handle                                          * 
 *                                                                             * 
 *  Returns:                                                                   * 
 *      NULL if error, otherwise pointer to partitioning info                  * 
 *                                                                             * 
 * --------------------------------------------------------------------------- */

FLffDisk * flffInfo ( int  handle )
{
    int        socNo, diskNo;
    FLffDisk * pd;

    /* if module hasn't been reset yet, do it now */

    if (resetDone == FALSE)
        (void) reset();

    /* break TFFS handle into socket# and disk#, and do sanity check */

    socNo  = H2S(handle);
    diskNo = H2D(handle);
 
    if ((socNo >= ((int) noOfSockets)) || (diskNo >= FL_MAX_TL_PARTITIONS))
        return NULL;

    /* if disk structure hasn't been allocated yet, do it now */

    if (ffDisk[socNo][diskNo] == NULL) {

        if( newDisk(handle) != flOK )
        return NULL;
    }

    pd = ffDisk[socNo][diskNo];

    /* read partition table(s) and install FAT filters is needed */

    if (pd->ffstate == flStateNotInitialized) {

        if( parseDisk(handle) != flOK )
            return NULL;
    }

    return pd;
}




#endif /* ABS_READ_WRITE && FL_READ_ONLY */


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性一二三区| 亚洲国产成人在线| 国产精品久久久久影院亚瑟| 一区二区三区国产精华| 国产成人自拍在线| 91麻豆精品国产自产在线观看一区 | 国产精品视频yy9299一区| 视频一区二区欧美| 色综合久久久久久久久| 国产亚洲精品中文字幕| 免费观看成人鲁鲁鲁鲁鲁视频| 一本到不卡免费一区二区| 欧美激情在线一区二区| 精品亚洲国内自在自线福利| 欧美卡1卡2卡| 亚洲精品国产高清久久伦理二区| 国产麻豆一精品一av一免费| 欧美久久免费观看| 亚洲精品免费播放| 99这里都是精品| 欧美国产一区在线| 国产一区二区三区在线看麻豆| 91精品午夜视频| 青青草原综合久久大伊人精品优势| 在线观看日韩国产| 亚洲精品美腿丝袜| 在线观看91视频| 亚洲永久免费av| 95精品视频在线| 国产精品短视频| 色综合久久久久久久久| 亚洲综合男人的天堂| 一本色道a无线码一区v| 亚洲最大成人网4388xx| 色综合久久综合中文综合网| 一区二区三区影院| 欧美亚洲动漫制服丝袜| 亚洲一区视频在线观看视频| 欧美色倩网站大全免费| 亚洲成人1区2区| 日韩视频中午一区| 国产呦精品一区二区三区网站| 欧美成人一级视频| 狠狠狠色丁香婷婷综合激情 | 欧美午夜不卡视频| 亚洲国产精品久久久久秋霞影院 | 亚洲成人av福利| 91精品国产色综合久久不卡电影 | 五月婷婷综合网| 日韩午夜在线观看| 国产美女视频一区| 国产精品福利一区| 欧美三级电影网站| 激情亚洲综合在线| 国产精品大尺度| 欧美撒尿777hd撒尿| 久久99九九99精品| 最新欧美精品一区二区三区| 欧美日韩另类国产亚洲欧美一级| 亚州成人在线电影| 久久先锋影音av鲁色资源网| 不卡视频一二三| 日韩电影在线一区二区| 国产欧美一区二区在线观看| 在线观看不卡一区| 毛片av中文字幕一区二区| 欧洲国内综合视频| 韩国女主播一区| 亚洲综合网站在线观看| 欧美精品一区视频| 在线一区二区视频| 精品一区二区免费在线观看| 亚洲免费观看高清完整| 久久午夜免费电影| 欧美日韩一区二区不卡| 国产传媒一区在线| 日韩va欧美va亚洲va久久| **性色生活片久久毛片| 精品国产第一区二区三区观看体验| 99国产精品久久久久久久久久久| 奇米888四色在线精品| 亚洲图片激情小说| 久久影院午夜片一区| 欧美色男人天堂| 99久久伊人精品| 国产成人av一区二区三区在线 | 91精品免费观看| 99re成人精品视频| 狠狠色2019综合网| 奇米色一区二区| 亚洲成人你懂的| 亚洲精选一二三| 国产精品私人影院| xfplay精品久久| 欧美一级高清大全免费观看| 91国偷自产一区二区三区观看| 成人免费电影视频| 国产高清不卡一区二区| 精品影视av免费| 蜜桃免费网站一区二区三区| 亚洲图片欧美综合| 一区二区三区在线不卡| 亚洲私人影院在线观看| 国产精品美女视频| 欧美国产精品v| 国产精品蜜臀在线观看| 中文字幕 久热精品 视频在线| 久久久国产一区二区三区四区小说| 日韩精品一区在线观看| 成人激情午夜影院| 日韩精品在线看片z| 日韩欧美中文字幕一区| 在线综合视频播放| 欧美一级二级三级蜜桃| 日韩亚洲电影在线| 日韩免费观看2025年上映的电影| 69堂成人精品免费视频| 日韩精品一区二区三区四区| 欧美一区二区视频网站| 精品捆绑美女sm三区| 久久综合九色综合欧美98| 精品一区二区三区蜜桃| 日韩欧美卡一卡二| 99精品欧美一区二区三区小说 | 亚洲欧美视频在线观看视频| 中文字幕欧美一| 夜夜爽夜夜爽精品视频| 亚洲国产精品自拍| 日韩主播视频在线| 久久99这里只有精品| 久久精品国产一区二区三| 国产一区日韩二区欧美三区| 风间由美一区二区av101| 成人av综合在线| 色狠狠av一区二区三区| 3d成人h动漫网站入口| 欧美一级二级三级蜜桃| 国产欧美一区二区精品久导航| 国产精品乱码人人做人人爱 | 久久综合九色欧美综合狠狠| 久久精品一级爱片| 亚洲欧美日韩一区二区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲综合久久av| 日本伊人午夜精品| 国产精品一区二区你懂的| 色猫猫国产区一区二在线视频| 69堂精品视频| 国产精品毛片久久久久久久| 婷婷夜色潮精品综合在线| 国产精品1区2区3区在线观看| 一本久道久久综合中文字幕| 日韩三级.com| 亚洲人成伊人成综合网小说| 玖玖九九国产精品| 97精品超碰一区二区三区| 这里只有精品视频在线观看| 中文字幕乱码一区二区免费| 午夜亚洲福利老司机| a亚洲天堂av| 欧美大胆人体bbbb| 夜夜嗨av一区二区三区中文字幕 | 午夜av一区二区三区| 国产成人日日夜夜| 日韩视频一区二区三区在线播放 | 欧美激情一区二区三区不卡| 亚洲国产日韩在线一区模特| 国产成人在线观看免费网站| 91精品国产色综合久久ai换脸| 国产精品私人影院| 经典三级一区二区| 制服丝袜一区二区三区| 亚洲免费在线观看视频| 国产精品自在欧美一区| 欧美一区二区成人| 一区二区三区日韩在线观看| 国产成人在线观看免费网站| 日韩精品一区二区三区老鸭窝 | 欧美二区在线观看| 亚洲男帅同性gay1069| 国产成人在线免费观看| 欧美v日韩v国产v| 免费高清在线一区| 91麻豆精品国产| 亚洲大片免费看| 91黄色小视频| 一区二区三区四区精品在线视频| 国产999精品久久| 国产欧美日韩在线| 韩国av一区二区三区在线观看| 欧美精品18+| 婷婷亚洲久悠悠色悠在线播放| 色久综合一二码| 亚洲一区二区视频| 欧美伊人精品成人久久综合97| 一区二区三区蜜桃| 欧美在线播放高清精品| 亚洲精品国产一区二区三区四区在线| 成人av电影免费观看| 国产精品毛片无遮挡高清|