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

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

?? volume.cxx

?? EFI(Extensible Firmware Interface)是下一代BIOS
?? CXX
?? 第 1 頁 / 共 2 頁
字號:
/*++

Copyright (c) 1991-1999 Microsoft Corporation

Module Name:

    volume.cxx

--*/

#include <pch.cxx>

#define _NTAPI_ULIB_
#define _IFSUTIL_MEMBER_

#include "ulib.hxx"
#include "ifsutil.hxx"
#include "error.hxx"
#include "volume.hxx"
#include "supera.hxx"
#include "hmem.hxx"
#include "message.hxx"
#include "rtmsg.h"
#include "ifsentry.hxx"

#if !defined(_EFICHECK_)

#include "autoreg.hxx"

#if !defined(_AUTOCHECK_)
#include "path.hxx"
#endif

extern "C" {
#if !defined(_AUTOCHECK_)
    #include <stdio.h>
#endif // _AUTOCHECK_
    #include "bootreg.h"
}

#endif // _EFICHECK_

DEFINE_EXPORTED_CONSTRUCTOR( VOL_LIODPDRV, LOG_IO_DP_DRIVE, IFSUTIL_EXPORT );

VOID
VOL_LIODPDRV::Construct (
    )
/*++

Routine Description:

    Constructor for VOL_LIODPDRV.

Arguments:

    None.

Return Value:

    None.

--*/
{
    _sa = NULL;
}

IFSUTIL_EXPORT
VOL_LIODPDRV::~VOL_LIODPDRV(
    )
/*++

Routine Description:

    Destructor for VOL_LIODPDRV.

Arguments:

    None.

Return Value:

    None.

--*/
{
    Destroy();
}


VOID
VOL_LIODPDRV::Destroy(
    )
/*++

Routine Description:

    This routine returns a VOL_LIODPDRV to its initial state.

Arguments:

    None.

Return Value:

    None.

--*/
{
    _sa = NULL;
}


IFSUTIL_EXPORT
FORMAT_ERROR_CODE
VOL_LIODPDRV::Initialize(
    IN      PCWSTRING   NtDriveName,
    IN      PSUPERAREA  SuperArea,
    IN OUT  PMESSAGE    Message,
    IN      BOOLEAN     ExclusiveWrite,
    IN      BOOLEAN     FormatMedia,
    IN      MEDIA_TYPE  MediaType
    )
/*++

Routine Description:

    This routine initializes a VOL_LIODPDRV to a valid state.

Arguments:

    NtDriveName     - Supplies the drive path for the volume.
    SuperArea       - Supplies the superarea for the volume.
    Message         - Supplies an outlet for messages.
    ExclusiveWrite  - Supplies whether or not the drive should be
                        opened for exclusive write.
    FormatMedia     - Supplies whether or not to format the media.
    MediaType       - Supplies the type of media to format to.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    CONST   MaxSectorsInVerify = 512;

    BIG_INT             chunk;
    BIG_INT             amount_to_verify;
    BIG_INT             i;
    BIG_INT             sectors;
    ULONG               percent;

    FORMAT_ERROR_CODE   errcode;

    Destroy();

    DebugAssert(NtDriveName);
    DebugAssert(SuperArea);

#if defined(FE_SB) && defined(_X86_)
    // PC98 Nov.01.1994
    // We need to notify DP_DRIVE::Initialize() through ForceFormat()
    // that we will format target madia.

    if (IsPC98_N() && MediaType) {
        ForceFormat(ANY);
    }
#endif // JAPAN && _X86_

    if (!LOG_IO_DP_DRIVE::Initialize(NtDriveName, Message, ExclusiveWrite)) {
        return GeneralError;
    }

    if (!_bad_sectors.Initialize()) {
        return GeneralError;
    }

    _sa = SuperArea;

// BUGBUG EFI can we ignore unknown media type?

//    if (QueryMediaType() == Unknown && MediaType == Unknown) {
//        Message ? Message->DisplayMsg(MSG_DISK_NOT_FORMATTED) : 1;
//        return GeneralError;
//    }

    if (!FormatMedia &&
        (QueryMediaType() == Unknown ||
        (MediaType != Unknown && MediaType != QueryMediaType()))) {
        Message ? Message->DisplayMsg(MSG_CANT_QUICKFMT) : 1;
        if (Message ? Message->IsYesResponse(FALSE) : FALSE) {
            FormatMedia = TRUE;
        } else {
            return GeneralError;
        }
    }

    if (FormatMedia) {
        if (!Lock()) {
//            Message ? Message->DisplayMsg(MSG_CANT_LOCK_THE_DRIVE) : 1;
            return LockError;
        }

        //
        //  We make a weird exception here for the Compaq 120MB floppy,
        //  because it wants to be formatted as if it were a hard disk.
        //

        if (IsFloppy() && MediaType != F3_120M_512) {

            BOOLEAN     rst;

#if !defined( _EFICHECK_ )

            es_status = NtSetThreadExecutionState(ES_CONTINUOUS|
                                                  ES_DISPLAY_REQUIRED|
                                                  ES_SYSTEM_REQUIRED,
                                                  &prev_state);

            if (!NT_SUCCESS(es_status)) {
                DebugPrintTrace(("IFSUTIL: Unable to set thread execution state (%x)\n", es_status));
            }

#endif

            rst = FormatVerifyFloppy(MediaType, &_bad_sectors, Message);

#if !defined( _EFICHECK_ )
            if (NT_SUCCESS(es_status)) {

                es_status = NtSetThreadExecutionState(prev_state, &dummy_state);
                if (!NT_SUCCESS(es_status)) {
                    DebugPrintTrace(("IFSUTIL: Unable to reset thread execution state (%x)\n", es_status));
                }
            }
#endif
            if (!rst)
                return GeneralError;

        } else {

            sectors = QuerySectors();
            chunk = min( sectors/20 + 1, MaxSectorsInVerify );

            percent = 0;
            if (Message && !Message->DisplayMsg(MSG_PERCENT_COMPLETE, "%d", percent)) {
                return GeneralError;
            }

#if !defined(_EFICHECK_)
            es_status = NtSetThreadExecutionState(ES_CONTINUOUS|
                                                  ES_DISPLAY_REQUIRED|
                                                  ES_SYSTEM_REQUIRED,
                                                  &prev_state);

            if (!NT_SUCCESS(es_status)) {
                DebugPrintTrace(("IFSUTIL: Unable to set thread execution state (%x)\n", es_status));
            }
#endif
            errcode = NoError;
            for (i = 0; i < sectors; i += chunk) {

                if ((i.GetLowPart() & 0x3ff) == 0) {
                    if (!Message->DisplayMsg(MSG_HIDDEN_STATUS, NORMAL_MESSAGE, 0)) {
                        errcode = GeneralError;
                        break;
                    }
                }

                if (i*100/sectors > percent) {
                    percent = ((i*100)/sectors).GetLowPart();
                    if (Message && !Message->DisplayMsg(MSG_PERCENT_COMPLETE, "%d", percent)) {
                        errcode = GeneralError;
                        break;
                    }
                }

                amount_to_verify = min(chunk, sectors - i);

                if (!Verify(i, amount_to_verify, &_bad_sectors)) {
                    if (Message) {
                        Message->DisplayMsg( (QueryLastNtStatus() == STATUS_NO_MEDIA_IN_DEVICE) ?
                                                MSG_FORMAT_NO_MEDIA_IN_DRIVE :
                                                MSG_CHK_NO_MEMORY );
                    }
                    errcode = GeneralError;
                    break;
                }
            }

#if !defined(_EFICHECK_)
            if (NT_SUCCESS(es_status)) {
                es_status = NtSetThreadExecutionState(prev_state, &dummy_state);
                if (!NT_SUCCESS(es_status)) {
                    DebugPrintTrace(("IFSUTIL: Unable to reset thread execution state (%x)\n", es_status));
                }
            }
#endif

            if (errcode != NoError)
                return errcode;

            if (Message && !Message->DisplayMsg(MSG_PERCENT_COMPLETE, "%d", 100)) {
                return GeneralError;
            }

        }
    }


    if (QuerySectors() == 0) {
        DebugAbort("Sectors is 0");
        return GeneralError;
    }

    return NoError;
}

IFSUTIL_EXPORT
BOOLEAN
VOL_LIODPDRV::Initialize(
    IN      PCWSTRING   NtDriveName,
    IN      PCWSTRING   HostFileName,
    IN      PSUPERAREA  SuperArea,
    IN OUT  PMESSAGE    Message,
    IN      BOOLEAN     ExclusiveWrite
    )
/*++

Routine Description:

    This routine initializes a VOL_LIODPDRV for a hosted
    volume, i.e. one that is implemented as a file on
    another volume.

Arguments:

    NtDriveName     - Supplies the drive path for the volume.
    HostFileName    - Supplies the drive name for the host file.
    SuperArea       - Supplies the superarea for the volume.
    Message         - Supplies an outlet for messages.
    ExclusiveWrite  - Supplies whether or not the drive should be
                        opened for exclusive write.

Return Value:

    TRUE upon successful completion.

--*/
{
    Destroy();

    DebugAssert(HostFileName);
    DebugAssert(SuperArea);

    if (!LOG_IO_DP_DRIVE::Initialize(NtDriveName,
                                     HostFileName,
                                     Message,
                                     ExclusiveWrite)) {

        return FALSE;
    }

    if (!_bad_sectors.Initialize()) {
        return FALSE;
    }

    _sa = SuperArea;

    return TRUE;
}


IFSUTIL_EXPORT
FORMAT_ERROR_CODE
VOL_LIODPDRV::Format(
    IN      PCWSTRING   Label,
    IN OUT  PMESSAGE    Message,
    IN      ULONG       Flags,
    IN      ULONG       ClusterSize,
    IN      ULONG       VirtualSectors
    )
/*++

Routine Description:

    This routine formats a volume.

Arguments:

    Label   - Supplies an optional label for the volume.
    Message - Supplies an outlet for messages.
    flags   - Supplies flags to control behavior of format
    ClusterSize
            - supplies the cluster size for the volume.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    MESSAGE msg;

    if (!Message) {
        Message = &msg;
    }

    if (!_sa) {
        return GeneralError;
    }

    if (!Lock()) {
        return LockError;
    }

    if (_sa->Create(&_bad_sectors,
                    Message, Label,
                    (Flags & FORMAT_BACKWARD_COMPATIBLE) ? TRUE : 0,
                    ClusterSize,
                    VirtualSectors)) {

        if (!DismountAndUnlock()) {
            return GeneralError;
        } else {

            PWSTRING    pLabel;
            DSTRING     label;
            NTSTATUS    status;

            pLabel = NULL;
            while (!NT_SUCCESS(status = _sa->FormatNotification(pLabel))) {
                if (status == STATUS_INVALID_VOLUME_LABEL) {

                    Message->Set(MSG_INVALID_LABEL_CHARACTERS);
                    Message->Display();

                    Message->Set(MSG_VOLUME_LABEL_PROMPT);
                    Message->Display();
                    Message->QueryStringInput(&label);

                    pLabel = &label;
                } else {
                    return GeneralError;
                }
            }
            return NoError;
        }
    } else
        return GeneralError;
}


IFSUTIL_EXPORT
BOOLEAN
VOL_LIODPDRV::ChkDsk(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青草av.久久免费一区| av中文字幕不卡| 久久婷婷一区二区三区| 国产精品69久久久久水密桃| 欧美国产精品专区| 99精品视频中文字幕| 亚洲欧美aⅴ...| 欧美久久免费观看| 久热成人在线视频| 欧美极品xxx| 在线一区二区三区四区| 日韩电影在线免费看| 精品1区2区在线观看| av资源网一区| 水野朝阳av一区二区三区| 日韩视频免费观看高清完整版| 国内精品伊人久久久久影院对白| 国产精品久久久久aaaa樱花| 欧美亚洲动漫精品| 日韩专区中文字幕一区二区| 久久综合狠狠综合久久激情| 99久久精品免费看| 亚洲成人av在线电影| 久久亚洲一区二区三区四区| 色综合网站在线| 麻豆精品新av中文字幕| 国产精品福利在线播放| 欧美电影在线免费观看| 国产成人精品影院| 亚洲国产精品一区二区久久| 精品va天堂亚洲国产| 99久久精品一区| 综合久久国产九一剧情麻豆| 在线观看亚洲一区| 精品一区二区三区香蕉蜜桃| 中文字幕佐山爱一区二区免费| 制服视频三区第一页精品| 欧美一激情一区二区三区| 国产成人av福利| 亚洲高清视频中文字幕| www国产成人免费观看视频 深夜成人网| 成人久久久精品乱码一区二区三区 | 99久久er热在这里只有精品66| 亚洲一区二区欧美日韩| 精品久久久久一区二区国产| 91国在线观看| 国产成人精品综合在线观看 | 国产91精品精华液一区二区三区| 亚洲一区在线观看网站| 久久精品夜色噜噜亚洲aⅴ| 欧美日韩一本到| 国产aⅴ精品一区二区三区色成熟| 亚洲高清免费视频| 国产精品视频免费看| 91精品国产综合久久久久久漫画| 91在线一区二区| 精品一区二区三区免费视频| 亚洲一区二区3| 国产精品美女视频| 精品国产一区二区在线观看| 欧美揉bbbbb揉bbbbb| av一二三不卡影片| 国产一区二区精品在线观看| 亚洲在线视频网站| 国产精品三级av| 精品播放一区二区| 欧美精品乱码久久久久久按摩| 91视视频在线观看入口直接观看www | 国产一区二区三区香蕉| 亚洲va国产天堂va久久en| 国产精品久久久久久久久免费樱桃| 欧美xxxx老人做受| 欧美精品三级在线观看| 91麻豆蜜桃一区二区三区| 国产成人综合亚洲网站| 久久99国内精品| 日本aⅴ免费视频一区二区三区| 亚洲自拍与偷拍| 亚洲特级片在线| 国产精品久久久久影院色老大| 久久免费看少妇高潮| 日韩欧美亚洲国产另类| 欧美日本一道本在线视频| 色婷婷香蕉在线一区二区| av一二三不卡影片| 成人精品小蝌蚪| 日本电影欧美片| 成人视屏免费看| 国产精品自拍网站| 开心九九激情九九欧美日韩精美视频电影| 亚洲成在人线免费| 亚洲国产综合人成综合网站| 亚洲女同ⅹxx女同tv| 国产精品精品国产色婷婷| 国产欧美一区二区在线| 久久青草国产手机看片福利盒子| 日韩亚洲电影在线| 91精品国产综合久久香蕉麻豆| 欧美日韩精品一区二区在线播放| 色88888久久久久久影院按摩| 91免费国产在线观看| 91网站在线播放| 91影视在线播放| 色综合久久久久综合体| 99re热这里只有精品视频| 成人美女视频在线看| bt7086福利一区国产| 92精品国产成人观看免费| 97se亚洲国产综合自在线| thepron国产精品| 成人av电影在线观看| jiyouzz国产精品久久| voyeur盗摄精品| 一本大道久久a久久综合| 色婷婷亚洲一区二区三区| 在线视频欧美精品| 欧美特级限制片免费在线观看| 欧美日韩国产一区| 欧美精品成人一区二区三区四区| 欧美精品v国产精品v日韩精品| 欧美人与禽zozo性伦| 91精品国产一区二区三区香蕉| 日韩精品中文字幕一区 | 国产精品视频你懂的| 亚洲视频在线一区| 亚洲午夜在线观看视频在线| 亚洲电影欧美电影有声小说| 日韩国产欧美三级| 久久av老司机精品网站导航| 国产一区二区三区在线观看精品| 国产盗摄视频一区二区三区| 99亚偷拍自图区亚洲| 欧美羞羞免费网站| 欧美一卡二卡在线| 久久婷婷久久一区二区三区| 国产日韩欧美综合一区| 亚洲欧洲精品一区二区三区 | 日韩精品电影在线| 久久99精品一区二区三区三区| 国产精品88av| 99精品久久只有精品| 欧美私人免费视频| 欧美电影免费观看高清完整版在线 | 成人激情动漫在线观看| 日本二三区不卡| 日韩一级完整毛片| 亚洲精品一区二区三区四区高清| 日本一区二区免费在线| 亚洲欧美另类久久久精品2019| 亚洲第一搞黄网站| 精品无码三级在线观看视频| 波波电影院一区二区三区| 在线观看免费成人| 日韩久久精品一区| 国产精品国产三级国产aⅴ中文| 亚洲成a人片在线观看中文| 麻豆精品在线视频| 成人黄色软件下载| 欧美高清你懂得| 久久久99免费| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲色图制服诱惑| 日本vs亚洲vs韩国一区三区| 成人听书哪个软件好| 欧美日韩视频专区在线播放| 久久久久久久网| 亚洲永久精品国产| 精品一区二区三区不卡| 99久久婷婷国产综合精品| 精品视频一区三区九区| 久久―日本道色综合久久| 亚洲欧美另类图片小说| 久久成人免费网| 一本久道久久综合中文字幕| 日韩欧美高清一区| 一区二区在线观看免费| 狠狠久久亚洲欧美| 欧美亚洲国产一区二区三区| 久久久久国产免费免费| 亚洲444eee在线观看| 国产iv一区二区三区| 69成人精品免费视频| 中文字幕在线不卡一区二区三区| 日av在线不卡| 一本大道久久a久久综合| 久久综合色8888| 午夜精品福利视频网站| 成人av网址在线| 欧美电影免费观看高清完整版 | 亚洲自拍都市欧美小说| 国产精品伊人色| 欧美日本一区二区三区四区| 国产精品超碰97尤物18| 国产一区二区网址| 欧美日韩国产乱码电影| 中文字幕日韩一区| 国产精品2024| 日韩欧美一级二级三级久久久| 亚洲国产欧美一区二区三区丁香婷| 成人伦理片在线|