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

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

?? message.cxx

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

Copyright (c) 1992-1999 Microsoft Corporation

Module Name:

    message.cxx

--*/

#include <pch.cxx>

#define _ULIB_MEMBER_
#include "ulib.hxx"
#include "message.hxx"
#include "hmem.hxx"

#if !defined( _EFICHECK_ )

extern "C" {
#include "stdio.h"

#if defined(_AUTOCHECK_)
#include "ntos.h"
#endif

}

#endif

DEFINE_EXPORTED_CONSTRUCTOR(MESSAGE, OBJECT, ULIB_EXPORT);


MESSAGE::~MESSAGE(
    )
/*++

Routine Description:

    Destructor for MESSAGE.

Arguments:

    None.

Return Value:

    None.

--*/
{
    Destroy();
}


VOID
MESSAGE::Construct(
    )
/*++

Routine Description:

    This routine initializes the object to a default initial state.

Arguments:

    None.

Return Value:

    None.

--*/
{
    _logged_chars = 0;
    _next_message_offset = 0;
    _logging_enabled = FALSE;
    _msgid = 0;
    _inuse = 0;
    _timeout.QuadPart = 0;
}


VOID
MESSAGE::Destroy(
    )
/*++

Routine Description:

    This routine returns the object to a default initial state.

Arguments:

    None.

Return Value:

    None.

--*/
{
    _logged_chars = 0;
    _next_message_offset = 0;
    _logging_enabled = FALSE;
    _msgid = 0;
    _inuse = 0;
    _timeout.QuadPart = 0;
}


ULIB_EXPORT
BOOLEAN
MESSAGE::Initialize(
    )
/*++

Routine Description:

    This routine initializes the class to a valid initial state.

Arguments:

    DotsOnly    - Autochk should produce only dots instead of messages.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    Destroy();

    _timeout.QuadPart = -10000;
    return _log_buffer.Initialize();
}


ULIB_EXPORT
BOOLEAN
MESSAGE::IsSuppressedMessage(
    )
/*++

Routine Description:

    This function determines whether the specified message ID
    should be suppressed, i.e. not recorded in the message log.

Arguments:

    MessageId   --  Supplies the Message ID in question.

Return Value:

    TRUE if this message ID is in the set which is not recorded
    in the message log.

--*/
{
    BOOLEAN result;

    switch( _msgid ) {

    case MSG_HIDDEN_STATUS:
    case MSG_PERCENT_COMPLETE:
    case MSG_PERCENT_COMPLETE2:
#if !defined( _EFICHECK_ )
    case MSG_CHK_NTFS_CHECKING_FILES:
    case MSG_CHK_NTFS_CHECKING_INDICES:
    case MSG_CHK_NTFS_INDEX_VERIFICATION_COMPLETED:
    case MSG_CHK_NTFS_FILE_VERIFICATION_COMPLETED:
    case MSG_CHK_NTFS_CHECKING_SECURITY:
    case MSG_CHK_NTFS_SECURITY_VERIFICATION_COMPLETED:
#endif
    case MSG_CHK_VOLUME_CLEAN:
    case MSG_CHK_CHECKING_FILES:
    case MSG_CHK_DONE_CHECKING:

        result = TRUE;
        break;

    default:
        result = FALSE;
        break;
    }

    return result;
}


ULIB_EXPORT
BOOLEAN
MESSAGE::Display(
    IN  PCSTR   Format ...
    )
/*++

Routine Description:

    This routine displays the message with the specified parameters.

Arguments:

    Format ... - Supplies a printf style list of arguments.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    va_list ap;
    BOOLEAN r;

    // unreferenced parameters
    (void)(this);

    va_start(ap, Format);
    r = DisplayV(Format, ap);
    va_end(ap);

    return r;
}


ULIB_EXPORT
BOOLEAN
MESSAGE::DisplayMsg(
    IN  MSGID   MsgId,
    IN  PCSTR   Format ...
    )
/*++

Routine Description:

    This routine displays the message with the specified parameters.
    It performs the operation atomically.

Arguments:

    Format ... - Supplies a printf style list of arguments.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    va_list ap;
    BOOLEAN r;

    while (InterlockedCompareExchange(&_inuse, 1, 0)) {
        NtDelayExecution(FALSE, &_timeout);
    }

    Set(MsgId);

    va_start(ap, Format);
    r = DisplayV(Format, ap);
    va_end(ap);

    InterlockedDecrement(&_inuse);

    return r;
}


ULIB_EXPORT
BOOLEAN
MESSAGE::DisplayMsg(
    IN  MSGID           MsgId,
    IN  MESSAGE_TYPE    MessageType,
    IN  ULONG           MessageVisual,
    IN  PCSTR           Format ...
    )
/*++

Routine Description:

    This routine displays the message with the specified parameters.
    It performs the operation atomically.

Arguments:

    Format ... - Supplies a printf style list of arguments.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    va_list ap;
    BOOLEAN r;

    while (InterlockedCompareExchange(&_inuse, 1, 0)) {
        NtDelayExecution(FALSE, &_timeout);
    }

    Set(MsgId, MessageType, MessageVisual);

    va_start(ap, Format);
    r = DisplayV(Format, ap);
    va_end(ap);

    InterlockedDecrement(&_inuse);

    return r;
}


ULIB_EXPORT
BOOLEAN
MESSAGE::LogMsg(
    IN  MSGID   MsgId,
    IN  PCSTR   Format ...
    )
/*++

Routine Description:

    This routine logs the message with the specified parameters.
    It performs the operation atomically.

Arguments:

    Format ... - Supplies a printf style list of arguments.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    va_list ap;
    BOOLEAN r;

    while (InterlockedCompareExchange(&_inuse, 1, 0)) {
        NtDelayExecution(FALSE, &_timeout);
    }

    Set(MsgId);

    va_start(ap, Format);
    r = LogV(Format, ap);
    va_end(ap);

    InterlockedDecrement(&_inuse);

    return r;
}

ULIB_EXPORT
BOOLEAN
MESSAGE::Log(
    IN  PCSTR   Format ...
    )
/*++

Routine Description:

    This routine logs the message with the specified parameters.

Arguments:

    Format ... - Supplies a printf style list of arguments.

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
    va_list ap;
    BOOLEAN r;

    // unreferenced parameters
    (void)(this);

    va_start(ap, Format);
    r = LogV(Format, ap);
    va_end(ap);

    return r;
}

ULIB_EXPORT
BOOLEAN
MESSAGE::DumpDataToLog(
    IN  PVOID   Data,
    IN  ULONG   Length
    )
/*++

Routine Description:

    This routine dumps the binary data to the log.

Arguments:

    Data       - Supplies a pointer to the data to be dumped
    Length     - Supplies the number of bytes to dump

Return Value:

    FALSE   - Failure.
    TRUE    - Success.

--*/
{
#if !defined( _EFICHECK_ )

    PUCHAR  pdata = (PUCHAR)Data;
    ULONG   block;
    BOOLEAN rst = TRUE;
    WCHAR    buffer[50], buffer2[20];
    USHORT  i;

    block = ((Length + 0xf) >> 4) + 1;
    Set(MSG_CHKLOG_DUMP_DATA);

    while (rst && block--) {

        for (i=0; i<16; i++) {
            __try {
                swprintf(buffer+i*3, L"%02x ", pdata[i]);
                if (isprint(pdata[i]))
                    swprintf(buffer2+i, L"%c", pdata[i]);
                else
                    buffer2[i] = '.';
            } __except (EXCEPTION_EXECUTE_HANDLER) {
                buffer[i*3] = '?';
                buffer[i*3+1] = '?';
                buffer[i*3+2] = ' ';
                buffer2[i] = '.';
            }
        }
        buffer[48] = ' ';
        buffer[49] = 0;
        buffer2[16] = 0;

        pdata += 0x10;
        rst = rst && Log("%ws%ws", buffer, buffer2);
    }

    return rst;
#else
    return FALSE;
#endif
}

BOOLEAN
MESSAGE::DisplayV(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久午夜片| 欧美日韩不卡一区二区| 国产欧美日韩亚州综合| 国产自产2019最新不卡| 欧美精品一区二区在线播放| 国内成人免费视频| 国产精品毛片久久久久久 | 国产激情偷乱视频一区二区三区| 久久综合九色综合久久久精品综合 | 99国产一区二区三精品乱码| 亚洲色图在线播放| 欧美剧情片在线观看| 久色婷婷小香蕉久久| 国产欧美一区二区精品性| www.综合网.com| 午夜久久福利影院| 2023国产一二三区日本精品2022| av成人老司机| 午夜激情久久久| 久久一区二区视频| 日本精品视频一区二区| 蜜臀国产一区二区三区在线播放 | 亚洲另类春色国产| 7777精品伊人久久久大香线蕉最新版 | 亚洲小少妇裸体bbw| 精品美女在线观看| 91麻豆国产在线观看| 日韩**一区毛片| 国产精品色哟哟网站| 欧美久久久久久蜜桃| 国产成人欧美日韩在线电影| 午夜精品久久久久久久蜜桃app| 日韩精品一区二区三区老鸭窝| av午夜精品一区二区三区| 石原莉奈在线亚洲二区| 国产精品久久久久久久久久久免费看 | 欧美第一区第二区| 91污在线观看| 国产一区视频在线看| 亚洲不卡一区二区三区| 国产精品素人视频| 日韩欧美国产成人一区二区| 91久久一区二区| 成人美女视频在线观看| 美女一区二区视频| 亚洲成av人综合在线观看| 国产精品久久久久三级| 日韩三级免费观看| 欧美性淫爽ww久久久久无| a级精品国产片在线观看| 久久精品免费观看| 日韩精品一二区| 亚洲动漫第一页| 亚洲视频图片小说| 国产欧美精品日韩区二区麻豆天美| 欧美日韩午夜在线视频| 91蜜桃免费观看视频| 成人av电影在线观看| 国产一区二区在线观看视频| 日韩影院精彩在线| 亚洲国产精品一区二区尤物区| 亚洲日本一区二区| 国产精品色呦呦| 国产精品无圣光一区二区| 久久久久久夜精品精品免费| 日韩欧美久久久| 51精品视频一区二区三区| 欧美四级电影在线观看| 欧美性色综合网| 欧美性欧美巨大黑白大战| 91亚洲国产成人精品一区二三| av不卡免费在线观看| 99视频精品免费视频| 成人网在线播放| 成人av在线资源| www.亚洲色图.com| 色综合天天做天天爱| 94色蜜桃网一区二区三区| 91片黄在线观看| 91蝌蚪porny| 99re成人精品视频| 欧美性猛交一区二区三区精品| 欧美偷拍一区二区| 在线综合视频播放| 精品日韩在线观看| 久久久噜噜噜久久人人看 | 日本精品一区二区三区高清| 色av成人天堂桃色av| 欧美日韩成人在线| 欧美成人午夜电影| 欧美极品xxx| 亚洲女厕所小便bbb| 亚洲一区二区三区国产| 日本不卡一区二区三区高清视频| 奇米影视在线99精品| 国内精品第一页| 成人黄色片在线观看| 欧美三级中文字| www久久久久| 亚洲精品免费电影| 日韩av一二三| 成人精品电影在线观看| 91色九色蝌蚪| 91精品国产综合久久久久久| 久久久亚洲欧洲日产国码αv| 国产精品久久久久久久久快鸭| 一区二区三区中文字幕| 日本不卡高清视频| 97国产精品videossex| 91精品久久久久久蜜臀| 中文一区在线播放| 亚洲一区二区精品久久av| 国内不卡的二区三区中文字幕| 色久综合一二码| 久久蜜桃av一区精品变态类天堂 | 亚洲国产精品传媒在线观看| 亚洲黄色免费电影| 国产一区二区三区免费在线观看 | 蜜臀av性久久久久蜜臀aⅴ流畅| 国产91精品一区二区麻豆亚洲| 在线免费视频一区二区| 欧美大片一区二区三区| 亚洲欧美在线高清| 蜜桃av一区二区三区| 91麻豆精品在线观看| 欧美成人video| 亚洲综合久久久| 懂色av中文一区二区三区 | 一本到不卡精品视频在线观看| 日韩免费高清av| 一区二区三区日韩| 国产成人精品影视| 日韩欧美精品在线| 一区二区三区四区五区视频在线观看| 精品一区二区三区免费观看| 欧美日韩一二三| 国产精品不卡视频| 国产精品一区二区久久不卡 | 成人av中文字幕| 精品国产乱码久久久久久蜜臀| 亚洲精品高清视频在线观看| 国产69精品久久久久777| 91精品国产综合久久精品| 一区二区三区在线视频免费观看 | 久久99精品久久只有精品| 欧美视频中文字幕| 亚洲色图视频免费播放| 成人免费福利片| 国产女主播一区| 国产精品资源网| 久久久综合视频| 国内精品第一页| 久久综合色之久久综合| 美女诱惑一区二区| 日韩一区二区在线观看| 日韩二区三区在线观看| 欧美日韩高清不卡| 午夜久久久久久电影| 9191久久久久久久久久久| 亚洲va韩国va欧美va精品| 欧美性videosxxxxx| 亚洲小少妇裸体bbw| 欧美日韩国产另类不卡| 亚洲国产日韩a在线播放性色| 在线观看一区二区视频| 亚洲亚洲人成综合网络| 欧美在线视频日韩| 亚洲成人av一区二区| 欧美午夜电影一区| 丝袜国产日韩另类美女| 欧美一区二区三区在线视频| 日本sm残虐另类| 精品国产髙清在线看国产毛片| 国内精品嫩模私拍在线| 久久精品亚洲精品国产欧美| 成人听书哪个软件好| 中文字幕一区二| 日本电影欧美片| 视频一区中文字幕国产| 精品美女在线播放| 国产激情一区二区三区桃花岛亚洲| 国产午夜精品久久久久久免费视| 成人av午夜电影| 亚洲欧美日韩中文字幕一区二区三区| 91丝袜高跟美女视频| 性感美女极品91精品| 日韩欧美国产精品| 成人伦理片在线| 亚洲国产中文字幕在线视频综合| 欧美一卡二卡在线| 岛国精品在线播放| 亚洲午夜在线视频| 日韩欧美国产一区在线观看| 国产精品影视在线| 一区二区三区在线视频观看 | 欧美日韩精品免费观看视频| 老司机精品视频一区二区三区| 国产欧美一区视频| 欧美三级韩国三级日本三斤| 极品少妇一区二区三区精品视频|