亚洲欧美第一页_禁久久精品乱码_粉嫩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在线| 欧美色图免费看| 欧美国产日本韩| 蜜臀久久99精品久久久久久9| 91同城在线观看| 久久先锋影音av| 男女男精品视频网| 在线观看www91| 亚洲欧洲av另类| 高清国产一区二区三区| 91精品国产综合久久香蕉的特点| 日韩一区有码在线| 国v精品久久久网| 精品国产一区二区三区忘忧草 | 欧美视频精品在线观看| 中文字幕在线观看一区| 国产精品99久| 久久综合九色综合97婷婷女人| 日本不卡的三区四区五区| 欧美日韩在线一区二区| 亚洲一区二三区| 色老综合老女人久久久| 亚洲男人的天堂在线aⅴ视频| 成人午夜激情影院| 国产精品欧美经典| 国产黄色精品网站| 国产清纯美女被跳蛋高潮一区二区久久w| 麻豆国产精品官网| 精品日韩一区二区| 国产米奇在线777精品观看| 久久伊人中文字幕| 国产成人在线看| 国产精品每日更新| 91在线高清观看| 亚洲综合自拍偷拍| 欧美精品乱码久久久久久| 午夜国产精品影院在线观看| 欧美日韩免费视频| 天天亚洲美女在线视频| 日韩欧美国产综合在线一区二区三区| 免费高清在线一区| 精品国产一区二区三区久久影院| 国产精品一级黄| 亚洲欧美成aⅴ人在线观看 | 成人丝袜高跟foot| 国产精品美女久久久久久久久| av在线综合网| 亚洲一区二区三区三| 欧美日韩国产一级二级| 久久成人久久爱| 久久精品人人爽人人爽| 色婷婷久久久综合中文字幕 | 亚洲视频图片小说| 在线精品视频一区二区三四| 日日欢夜夜爽一区| 久久综合九色综合欧美98| 91一区二区三区在线观看| 亚洲成人动漫一区| 久久夜色精品一区| 91麻豆文化传媒在线观看| 日本午夜一区二区| 亚洲国产精品99久久久久久久久| 一本色道综合亚洲| 久久精品国产网站| 亚洲欧洲制服丝袜| 欧美xxx久久| 一本高清dvd不卡在线观看| 日本免费新一区视频| 久久久久99精品一区| 欧美在线一区二区| 国产美女视频一区| 亚洲成av人片| 国产精品国产三级国产三级人妇| 日韩无一区二区| 色屁屁一区二区| 国产原创一区二区三区| 一区二区三区不卡视频| 久久亚洲一区二区三区明星换脸| 欧美午夜视频网站| 懂色av一区二区三区免费观看| 丝袜a∨在线一区二区三区不卡| 中文字幕国产一区| 日韩一区二区三区电影在线观看| www.亚洲在线| 国产精品18久久久久久久久 | jlzzjlzz国产精品久久| 免费观看久久久4p| 亚洲福利一区二区三区| 最新国产の精品合集bt伙计| 久久先锋资源网| 精品人在线二区三区| 欧美视频精品在线观看| 99精品在线免费| 国产成人免费在线视频| 日韩不卡免费视频| 一区二区在线观看视频| 中文字幕欧美区| 26uuu精品一区二区三区四区在线| 欧美色手机在线观看| 92精品国产成人观看免费| 国产一区二区三区免费在线观看| 亚洲自拍另类综合| 亚洲欧洲日产国码二区| 国产精品久久久久久久久久免费看 | 欧美精品成人一区二区三区四区| 色综合久久中文综合久久97| 福利一区二区在线| 国产精品一区2区| 国产电影一区二区三区| 国产一区二区福利| 捆绑紧缚一区二区三区视频| 日日欢夜夜爽一区| 日日摸夜夜添夜夜添亚洲女人| 亚洲大片免费看| 亚洲二区视频在线| 午夜精品一区二区三区免费视频| 一区二区三区色| 亚洲自拍与偷拍| 午夜精品免费在线| 秋霞电影网一区二区| 久久精品国产99国产| 精品一区二区综合| 国产精品一二三| aa级大片欧美| 91女神在线视频| 色琪琪一区二区三区亚洲区| 欧美在线影院一区二区| 制服丝袜亚洲色图| 日韩免费视频一区二区| 久久综合色鬼综合色| 中文字幕欧美激情| 亚洲乱码中文字幕| 亚洲成人av福利| 久久99九九99精品| 成人性生交大片免费看视频在线 | 亚洲天堂a在线| 一级精品视频在线观看宜春院| 亚洲成人动漫一区| 国产精品亚洲第一区在线暖暖韩国| 成人性色生活片免费看爆迷你毛片| 91高清在线观看| 欧美大片在线观看| 1024成人网| 日韩黄色小视频| 国产成人在线观看免费网站| 色美美综合视频| 欧美r级在线观看| 中文字幕制服丝袜一区二区三区 | 亚洲欧洲日韩综合一区二区| 亚洲午夜久久久久中文字幕久| 日本aⅴ精品一区二区三区 | 免费在线看成人av| 成人综合在线网站| 在线电影国产精品| 中文成人综合网| 蜜桃一区二区三区四区| 成人免费视频视频| 欧美日韩国产综合视频在线观看 | 日韩欧美高清在线| 国产精品对白交换视频| 日日骚欧美日韩| 99re这里都是精品| 日韩免费看网站| 亚洲成在人线免费| 不卡视频在线观看| 精品国产91洋老外米糕| 一区二区成人在线视频| 国产成a人亚洲精品| 欧美日韩成人高清| 国产精品电影院| 精品亚洲国产成人av制服丝袜| 欧美在线视频全部完| 国产精品蜜臀av| 国产精品综合一区二区三区| 欧美日韩午夜在线| 亚洲欧美日韩精品久久久久| 国产成人综合网站| 欧美电影精品一区二区| 亚洲午夜国产一区99re久久| 91亚洲国产成人精品一区二区三 | 亚洲国产毛片aaaaa无费看| 国产91精品入口| 久久久久国产一区二区三区四区| 蜜臀精品久久久久久蜜臀| 91精品国产91久久久久久一区二区 | 欧美一区二区三区日韩视频| 亚洲男人的天堂一区二区| 99久久婷婷国产综合精品电影| 久久久国际精品| 国产精品亚洲人在线观看| 精品国产一区二区三区忘忧草| 麻豆精品一区二区| 日韩亚洲欧美成人一区| 免费日韩伦理电影| 日韩三区在线观看| 精彩视频一区二区三区| 欧美xxxxxxxx| 国产成人精品午夜视频免费|