⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug.cpp

📁 WINDDK XP/2003 Microsoft Bitmap Printer Driver Sample Decompress to src in WINDDK and "build -cZ
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    PWSTR psziDComplexity = L"Unknown iDComplexity.";
    switch (pco->iDComplexity )
    {
        case DC_COMPLEX: psziDComplexity = L"DC_COMPLEX"; break;
        case DC_RECT: psziDComplexity = L"DC_RECT"; break;
        case DC_TRIVIAL: psziDComplexity = L"DC_TRIVIAL"; break;
    }
    OEMDebugMessage(TEXT("\tiDComplexity: %s\r\n"), psziDComplexity);

    PWSTR psziFComplexity = L"0";
    switch (pco->iFComplexity)
    {
        case FC_COMPLEX: psziFComplexity = L"FC_COMPLEX"; break;
        case FC_RECT: psziFComplexity = L"FC_RECT"; break;
        case FC_RECT4: psziFComplexity = L"FC_RECT4"; break;
    }
    OEMDebugMessage(TEXT("\tiFComplexity: %s\r\n"), psziFComplexity);

    PWSTR psziMode = L"0";
    switch (pco->iMode)
    {
        case TC_PATHOBJ: psziMode = L"TC_PATHOBJ"; break;
        case TC_RECTANGLES: psziMode = L"TC_RECTANGLES"; break;
    }
    OEMDebugMessage(TEXT("\tiMode: %s\r\n"), psziMode);

    PWSTR pszfjOptions = L"0";
    switch (pco->fjOptions)
    {
        case OC_BANK_CLIP: pszfjOptions = L"TC_PATHOBJ"; break;
    }
    OEMDebugMessage(TEXT("\tfjOptions: %s\r\n"), pszfjOptions);

    OEMDebugMessage(TEXT("\n"));
}

#if DBG
    DBG_FLAGS gafdBRUSHOBJ_flColorType[] = {
        { L"BR_CMYKCOLOR",      BR_CMYKCOLOR},
        { L"BR_DEVICE_ICM",     BR_DEVICE_ICM},
        { L"BR_HOST_ICM",       BR_HOST_ICM},
        {NULL, 0}               // The NULL entry is important
    };
#else
    DBG_FLAGS gafdBRUSHOBJ_flColorType[] = {
        {NULL, 0}
    };
#endif

void __stdcall
COemUniDbg::
vDumpBRUSHOBJ(
    INT         iDebugLevel,
    PWSTR       pszInLabel,
    BRUSHOBJ    *pbo
    )

/*++

Routine Description:

    Dumps the members of a BRUSHOBJ structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pbo - pointer to the BRUSHOBJ strct to be dumped

Return Value:

    NONE

--*/

{
    // Check if the debug level is appropriate
    //
    if (iDebugLevel < giDebugLevel)
    {
        // Nothing to output here
        //
        return;
    }

    // Prepare the label string
    //
    PCWSTR pszLabel = EnsureLabel(pszInLabel, L"pbo");

    // Return if strct to be dumped is invalid
    //
    if (!pbo)
    {
        OEMDebugMessage(TEXT("\nBRUSHOBJ [%s]: NULL\r\n"), pszLabel);

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nBRUSHOBJ [%s]: %#x\r\n"), pszLabel, pbo);
    OEMDebugMessage(TEXT("\tiSolidColor: %#x\r\n"), pbo->iSolidColor);
    OEMDebugMessage(TEXT("\tpvRbrush: %#x\r\n"), pbo->pvRbrush);
    OEMDebugMessage(TEXT("\tflColorType: "));
    vDumpFlags(pbo->flColorType, gafdBRUSHOBJ_flColorType);

    OEMDebugMessage(TEXT("\n"));
}

#if DBG
    DBG_FLAGS gafdGDIINFO_flHTFlags[] = {
        { L"HT_FLAG_8BPP_CMY332_MASK",          HT_FLAG_8BPP_CMY332_MASK},
        { L"HT_FLAG_ADDITIVE_PRIMS",                HT_FLAG_ADDITIVE_PRIMS},
        { L"HT_FLAG_DO_DEVCLR_XFORM",           HT_FLAG_DO_DEVCLR_XFORM},
        { L"HT_FLAG_HAS_BLACK_DYE",             HT_FLAG_HAS_BLACK_DYE},
        { L"HT_FLAG_HIGH_INK_ABSORPTION",       HT_FLAG_HIGH_INK_ABSORPTION},
        { L"HT_FLAG_HIGHER_INK_ABSORPTION",     HT_FLAG_HIGHER_INK_ABSORPTION},
        { L"HT_FLAG_HIGHEST_INK_ABSORPTION",    HT_FLAG_HIGHEST_INK_ABSORPTION},
        { L"HT_FLAG_INK_ABSORPTION_IDX0",       HT_FLAG_INK_ABSORPTION_IDX0},
        { L"HT_FLAG_INK_ABSORPTION_IDX1",       HT_FLAG_INK_ABSORPTION_IDX1},
        { L"HT_FLAG_INK_ABSORPTION_IDX2",       HT_FLAG_INK_ABSORPTION_IDX2},
        { L"HT_FLAG_INK_ABSORPTION_IDX3",       HT_FLAG_INK_ABSORPTION_IDX3},
        { L"HT_FLAG_INK_HIGH_ABSORPTION",       HT_FLAG_INK_HIGH_ABSORPTION},
        { L"HT_FLAG_LOW_INK_ABSORPTION",        HT_FLAG_LOW_INK_ABSORPTION},
        { L"HT_FLAG_LOWER_INK_ABSORPTION",      HT_FLAG_LOWER_INK_ABSORPTION},
        { L"HT_FLAG_LOWEST_INK_ABSORPTION",     HT_FLAG_LOWEST_INK_ABSORPTION},
        { L"HT_FLAG_OUTPUT_CMY",                    HT_FLAG_OUTPUT_CMY},
        { L"HT_FLAG_PRINT_DRAFT_MODE",          HT_FLAG_PRINT_DRAFT_MODE},
        { L"HT_FLAG_SQUARE_DEVICE_PEL",         HT_FLAG_SQUARE_DEVICE_PEL},
        { L"HT_FLAG_USE_8BPP_BITMASK",          HT_FLAG_USE_8BPP_BITMASK},
        { L"HT_FLAG_NORMAL_INK_ABSORPTION",     HT_FLAG_NORMAL_INK_ABSORPTION},
//      { L"HT_FLAG_INVERT_8BPP_BITMASK_IDX",   HT_FLAG_INVERT_8BPP_BITMASK_IDX},
        {NULL, 0}                               // The NULL entry is important
    };
#else
    DBG_FLAGS gafdGDIINFO_flHTFlags[] = {
        {NULL, 0}
    };
#endif

void __stdcall
COemUniDbg::
vDumpGDIINFO(
    INT         iDebugLevel,
    PWSTR       pszInLabel,
    GDIINFO     *pGdiInfo
    )

/*++

Routine Description:

    Dumps the members of a GDIINFO structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pGdiInfo - pointer to the GDIINFO strct to be dumped

Return Value:

    NONE

--*/

{
    // Check if the debug level is appropriate
    //
    if (iDebugLevel < giDebugLevel)
    {
        // Nothing to output here
        //
        return;
    }

    // Prepare the label string
    //
    PCWSTR pszLabel = EnsureLabel(pszInLabel, L"pGdiInfo");

    // Return if strct to be dumped is invalid
    //
    if (!pGdiInfo)
    {
        OEMDebugMessage(TEXT("\nGDIINFO [%s]: NULL\r\n"), pszLabel);

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nGDIINFO [%s]: %#x\r\n"), pszLabel, pGdiInfo);
    OEMDebugMessage(TEXT("\tulVersion: %#x\r\n"), pGdiInfo->ulVersion);

    PWSTR pszulTechnology = L"???";
    switch (pGdiInfo->ulTechnology)
    {
        case DT_PLOTTER: pszulTechnology = L"DT_PLOTTER"; break;
        case DT_RASDISPLAY: pszulTechnology = L"DT_RASDISPLAY"; break;
        case DT_RASPRINTER: pszulTechnology = L"DT_RASPRINTER"; break;
        case DT_RASCAMERA: pszulTechnology = L"DT_RASCAMERA"; break;
        case DT_CHARSTREAM: pszulTechnology = L"DT_CHARSTREAM"; break;
    }
    OEMDebugMessage(TEXT("\tulTechnology: %ld [%s]\r\n"), pGdiInfo->ulTechnology, pszulTechnology);

    OEMDebugMessage(TEXT("\tulHorzSize: %ld\r\n"), pGdiInfo->ulHorzSize);
    OEMDebugMessage(TEXT("\tulVertSize: %ld\r\n"), pGdiInfo->ulVertSize);
    OEMDebugMessage(TEXT("\tulHorzRes: %ld\r\n"), pGdiInfo->ulHorzRes);
    OEMDebugMessage(TEXT("\tulVertRes: %ld\r\n"), pGdiInfo->ulVertRes);
    OEMDebugMessage(TEXT("\tcBitsPixel: %ld\r\n"), pGdiInfo->cBitsPixel);
    OEMDebugMessage(TEXT("\tcPlanes: %ld\r\n"), pGdiInfo->cPlanes);
    OEMDebugMessage(TEXT("\tulNumColors: %ld\r\n"), pGdiInfo->ulNumColors);
    OEMDebugMessage(TEXT("\tflRaster: %#x\r\n"), pGdiInfo->flRaster);
    OEMDebugMessage(TEXT("\tulLogPixelsX: %ld\r\n"), pGdiInfo->ulLogPixelsX);
    OEMDebugMessage(TEXT("\tulLogPixelsY: %ld\r\n"), pGdiInfo->ulLogPixelsY);

    PWSTR pszTextCaps = L"Text scrolling through DrvBitBlt/DrvCopyBits";
    if (TC_SCROLLBLT == (pGdiInfo->flTextCaps & TC_SCROLLBLT))
    {
        pszTextCaps = L"Text scrolling through DrvTextOut";
    }
    OEMDebugMessage(TEXT("\tflTextCaps: %s\n"), pszTextCaps);

    OEMDebugMessage(TEXT("\tulDACRed: %#x\r\n"), pGdiInfo->ulDACRed);
    OEMDebugMessage(TEXT("\tulDACGreen: %#x\r\n"), pGdiInfo->ulDACGreen);
    OEMDebugMessage(TEXT("\tulDACBlue: %#x\r\n"), pGdiInfo->ulDACBlue);
    OEMDebugMessage(TEXT("\tulAspectX: %ld\r\n"), pGdiInfo->ulAspectX);
    OEMDebugMessage(TEXT("\tulAspectY: %ld\r\n"), pGdiInfo->ulAspectY);
    OEMDebugMessage(TEXT("\tulAspectXY: %ld\r\n"), pGdiInfo->ulAspectXY);
    OEMDebugMessage(TEXT("\txStyleStep: %ld\r\n"), pGdiInfo->xStyleStep);
    OEMDebugMessage(TEXT("\tyStyleStep: %ld\r\n"), pGdiInfo->yStyleStep);
    OEMDebugMessage(TEXT("\tdenStyleStep: %ld\r\n"), pGdiInfo->denStyleStep);
    OEMDebugMessage(TEXT("\tptlPhysOffset: (%ld, %ld)\r\n"), pGdiInfo->ptlPhysOffset.x, pGdiInfo->ptlPhysOffset.y);
    OEMDebugMessage(TEXT("\tszlPhysSize: (%ld, %ld)\r\n"), pGdiInfo->szlPhysSize.cx, pGdiInfo->szlPhysSize.cy);
    OEMDebugMessage(TEXT("\tulNumPalReg: %ld\r\n"), pGdiInfo->ulNumPalReg);
    OEMDebugMessage(TEXT("\tulDevicePelsDPI: %ld\r\n"), pGdiInfo->ulDevicePelsDPI);

    PWSTR pszPrimaryOrder = L"???";
    switch(pGdiInfo->ulPrimaryOrder)
    {
        case PRIMARY_ORDER_ABC: pszPrimaryOrder = L"PRIMARY_ORDER_ABC [RGB/CMY]"; break;
        case PRIMARY_ORDER_ACB: pszPrimaryOrder = L"PRIMARY_ORDER_ACB [RBG/CYM]"; break;
        case PRIMARY_ORDER_BAC: pszPrimaryOrder = L"PRIMARY_ORDER_BAC [GRB/MCY]"; break;
        case PRIMARY_ORDER_BCA: pszPrimaryOrder = L"PRIMARY_ORDER_BCA [GBR/MYC]"; break;
        case PRIMARY_ORDER_CBA: pszPrimaryOrder = L"PRIMARY_ORDER_CBA [BGR/YMC]"; break;
        case PRIMARY_ORDER_CAB: pszPrimaryOrder = L"PRIMARY_ORDER_CAB [BRG/YCM]"; break;
    }
    OEMDebugMessage(TEXT("\tulPrimaryOrder: %s\n"), pszPrimaryOrder);

    PWSTR pszHTPat = L"???";
    switch(pGdiInfo->ulHTPatternSize)
    {
        case HT_PATSIZE_2x2         : pszHTPat = L"HT_PATSIZE_2x2 ";            break;
        case HT_PATSIZE_2x2_M       : pszHTPat = L"HT_PATSIZE_2x2_M";           break;
        case HT_PATSIZE_4x4         : pszHTPat = L"HT_PATSIZE_4x4";         break;
        case HT_PATSIZE_4x4_M       : pszHTPat = L"HT_PATSIZE_4x4_M";           break;
        case HT_PATSIZE_6x6         : pszHTPat = L"HT_PATSIZE_6x6";         break;
        case HT_PATSIZE_6x6_M       : pszHTPat = L"HT_PATSIZE_6x6_M";           break;
        case HT_PATSIZE_8x8         : pszHTPat = L"HT_PATSIZE_8x8";         break;
        case HT_PATSIZE_8x8_M       : pszHTPat = L"HT_PATSIZE_8x8_M";           break;
        case HT_PATSIZE_10x10       : pszHTPat = L"HT_PATSIZE_10x10";           break;
        case HT_PATSIZE_10x10_M     : pszHTPat = L"HT_PATSIZE_10x10_M";     break;
        case HT_PATSIZE_12x12       : pszHTPat = L"HT_PATSIZE_12x12";           break;
        case HT_PATSIZE_12x12_M     : pszHTPat = L"HT_PATSIZE_12x12_M";     break;
        case HT_PATSIZE_14x14       : pszHTPat = L"HT_PATSIZE_14x14";           break;
        case HT_PATSIZE_14x14_M     : pszHTPat = L"HT_PATSIZE_14x14_M";     break;
        case HT_PATSIZE_16x16       : pszHTPat = L"HT_PATSIZE_16x16";           break;
        case HT_PATSIZE_16x16_M     : pszHTPat = L"HT_PATSIZE_16x16_M";     break;
        case HT_PATSIZE_SUPERCELL   : pszHTPat = L"HT_PATSIZE_SUPERCELL";       break;
        case HT_PATSIZE_SUPERCELL_M : pszHTPat = L"HT_PATSIZE_SUPERCELL_M"; break;
        case HT_PATSIZE_USER        : pszHTPat = L"HT_PATSIZE_USER";            break;
//      case HT_PATSIZE_MAX_INDEX   : pszHTPat = L"HT_PATSIZE_MAX_INDEX";       break;
//      case HT_PATSIZE_DEFAULT     : pszHTPat = L"HT_PATSIZE_DEFAULT";     break;
    }
    OEMDebugMessage(TEXT("\tulHTPatternSize: %s\n"), pszHTPat);

    PWSTR pszHTOutputFormat = L"???";
    switch(pGdiInfo->ulHTOutputFormat)
    {
        case HT_FORMAT_1BPP         : pszHTOutputFormat = L"HT_FORMAT_1BPP";        break;
        case HT_FORMAT_4BPP         : pszHTOutputFormat = L"HT_FORMAT_4BPP";        break;
        case HT_FORMAT_4BPP_IRGB    : pszHTOutputFormat = L"HT_FORMAT_4BPP_IRGB";   break;
        case HT_FORMAT_8BPP         : pszHTOutputFormat = L"HT_FORMAT_8BPP";        break;
        case HT_FORMAT_16BPP        : pszHTOutputFormat = L"HT_FORMAT_16BPP";       break;
        case HT_FORMAT_24BPP        : pszHTOutputFormat = L"HT_FORMAT_24BPP";       break;
        case HT_FORMAT_32BPP        : pszHTOutputFormat = L"HT_FORMAT_32BPP";       break;
    }
    OEMDebugMessage(TEXT("\tulHTOutputFormat: %s\n"), pszHTOutputFormat);

    OEMDebugMessage(TEXT("\tflHTFlags: "));
    vDumpFlags(pGdiInfo->flHTFlags, gafdGDIINFO_flHTFlags);
    OEMDebugMessage(TEXT("\tulVRefresh: %ld\r\n"), pGdiInfo->ulVRefresh);
    OEMDebugMessage(TEXT("\tulBltAlignment: %ld\r\n"), pGdiInfo->ulBltAlignment);
    OEMDebugMessage(TEXT("\tulPanningHorzRes: %ld\r\n"), pGdiInfo->ulPanningHorzRes);
    OEMDebugMessage(TEXT("\tulPanningVertRes: %ld\r\n"), pGdiInfo->ulPanningVertRes);
    OEMDebugMessage(TEXT("\txPanningAlignment: %ld\r\n"), pGdiInfo->xPanningAlignment);
    OEMDebugMessage(TEXT("\tyPanningAlignment: %ld\r\n"), pGdiInfo->yPanningAlignment);
    OEMDebugMessage(TEXT("\tcxHTPat: %ld\r\n"), pGdiInfo->cxHTPat);
    OEMDebugMessage(TEXT("\tcyHTPat: %ld\r\n"), pGdiInfo->cyHTPat);
    OEMDebugMessage(TEXT("\tpHTPatA: %#x\r\n"), pGdiInfo->pHTPatA);
    OEMDebugMessage(TEXT("\tpHTPatB: %#x\r\n"), pGdiInfo->pHTPatB);
    OEMDebugMessage(TEXT("\tpHTPatC: %#x\r\n"), pGdiInfo->pHTPatC);
    OEMDebugMessage(TEXT("\tflShadeBlend: %#x\r\n"), pGdiInfo->flShadeBlend);

    PWSTR pszPhysPixChars = L"???";
    switch(pGdiInfo->ulPhysicalPixelCharacteristics)
    {
        case PPC_DEFAULT: pszPhysPixChars = L"PPC_DEFAULT"; break;
        case PPC_BGR_ORDER_HORIZONTAL_STRIPES: pszPhysPixChars = L"PPC_BGR_ORDER_HORIZONTAL_STRIPES"; break;
        case PPC_BGR_ORDER_VERTICAL_STRIPES: pszPhysPixChars = L"PPC_BGR_ORDER_VERTICAL_STRIPES"; break;
        case PPC_RGB_ORDER_HORIZONTAL_STRIPES: pszPhysPixChars = L"PPC_RGB_ORDER_HORIZONTAL_STRIPES"; break;
        case PPC_RGB_ORDER_VERTICAL_STRIPES: pszPhysPixChars = L"PPC_RGB_ORDER_VERTICAL_STRIPES"; break;
        case PPC_UNDEFINED: pszPhysPixChars = L"PPC_UNDEFINED"; break;
    }
    OEMDebugMessage(TEXT("\tulPhysicalPixelCharacteristics: %s\n"), pszPhysPixChars);

    PWSTR pszPhysPixGamma = L"???";
    switch(pGdiInfo->ulPhysicalPixelGamma)
    {
        case PPG_DEFAULT: pszPhysPixGamma = L"PPG_DEFAULT"; break;
        case PPG_SRGB   : pszPhysPixGamma = L"PPG_SRGB"; break;
    }
    OEMDebugMessage(TEXT("\tulPhysicalPixelGamma: %s\n"), pszPhysPixGamma);

    OEMDebugMessage(TEXT("\n"));
}

#if DBG
    DBG_FLAGS gafdDEVINFO_flGraphicsCaps[] = {
        { L"GCAPS_BEZIERS",             GCAPS_BEZIERS},
        { L"GCAPS_GEOMETRICWIDE",       GCAPS_GEOMETRICWIDE},
        { L"GCAPS_ALTERNATEFILL",       GCAPS_ALTERNATEFILL},
        { L"GCAPS_WINDINGFILL",         GCAPS_WINDINGFILL},
        { L"GCAPS_HALFTONE",                GCAPS_HALFTONE},
        { L"GCAPS_COLOR_DITHER",        GCAPS_COLOR_DITHER},
        { L"GCAPS_HORIZSTRIKE",         GCAPS_HORIZSTRIKE},
        { L"GCAPS_VERTSTRIKE",          GCAPS_VERTSTRIKE},
        { L"GCAPS_OPAQUERECT",          GCAPS_OPAQUERECT},
        { L"GCAPS_VECTORFONT",          GCAPS_VECTORFONT},
        { L"GCAPS_MONO_DITHER",         GCAPS_MONO_DITHER},
        { L"GCAPS_ASYNCCHANGE",     GCAPS_ASYNCCHANGE},
        { L"GCAPS_ASYNCMOVE",           GCAPS_ASYNCMOVE},
        { L"GCAPS_DONTJOURNAL",         GCAPS_DONTJOURNAL},
        { L"GCAPS_DIRECTDRAW",          GCAPS_DIRECTDRAW},
        { L"GCAPS_ARBRUSHOPAQUE",       GCAPS_ARBRUSHOPAQUE},
        { L"GCAPS_PANNING",             GCAPS_PANNING},
        { L"GCAPS_HIGHRESTEXT",         GCAPS_HIGHRESTEXT},
        { L"GCAPS_PALMANAGED",          GCAPS_PALMANAGED},
        { L"GCAPS_DITHERONREALIZE",     GCAPS_DITHERONREALIZE},
        { L"GCAPS_NO64BITMEMACCESS",    GCAPS_NO64BITMEMACCESS},
        { L"GCAPS_FORCEDITHER",         GCAPS_FORCEDITHER},
        { L"GCAPS_GRAY16",              GCAPS_GRAY16},
        { L"GCAPS_ICM",                 GCAPS_ICM},
        { L"GCAPS_CMYKCOLOR",           GCAPS_CMYKCOLOR},
        { L"GCAPS_LAYERED",             GCAPS_LAYERED},
        { L"GCAPS_ARBRUSHTEXT",         GCAPS_ARBRUSHTEXT},
        { L"GCAPS_SCREENPRECISION",     GCAPS_SCREENPRECISION},
        { L"GCAPS_FONT_RASTERIZER",     GCAPS_FONT_RASTERIZER},
        { L"GCAPS_NUP",                 GCAPS_NUP},
        {NULL, 0}                       // The NULL entry is important
    };

    DBG_FLAGS gafdDEVINFO_flGraphicsCaps2[] = {
        { L"GCAPS2_JPEGSRC",                GCAPS2_JPEGSRC},
        { L"GCAPS2_xxxx",               GCAPS2_xxxx},
        { L"GCAPS2_PNGSRC",             GCAPS2_PNGSRC},
        { L"GCAPS2_CHANGEGAMMARAMP",    GCAPS2_CHANGEGAMMARAMP},
        { L"GCAPS2_ALPHACURSOR",        GCAPS2_ALPHACURSOR},
        { L"GCAPS2_SYNCFLUSH",          GCAPS2_SYNCFLUSH},
        { L"GCAPS2_SYNCTIMER",          GCAPS2_SYNCTIMER},
        { L"GCAPS2_ICD_MULTIMON",       GCAPS2_ICD_MULTIMON},
        { L"GCAPS2_MOUSETRAILS",        GCAPS2_MOUSETRAILS},
        { L"GCAPS2_RESERVED1",          GCAPS2_RESERVED1},
        {NULL, 0}                       // The NULL entry is important
    };
#else
    DBG_FLAGS gafdDEVINFO_flGraphicsCaps[] = {
        {NULL, 0}
    };

    DBG_FLAGS gafdDEVINFO_flGraphicsCaps2[] = {
        {NULL, 0}
    };
#endif

void __stdcall
COemUniDbg::
vDumpDEVINFO(
    INT         iDebugLevel,
    PWSTR       pszInLabel,
    DEVINFO     *pDevInfo
    )

/*++

Routine Description:

    Dumps the members of a DEVINFO structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pDevInfo - pointer to the DEVINFO strct to be dumped

Return Value:

    NONE

--*/

{
    // Check if the debug level is appropriate
    //
    if (iDebugLevel < giDebugLevel)
    {
        // Nothing to output here
        //
        return;
    }

    // Prepare the label string
    //
    PCWSTR pszLabel = EnsureLabel(pszInLabel, L"pDevInfo");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -