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

📄 debug.cpp

📁 WINDDK XP/2003 Microsoft Bitmap Printer Driver Sample Decompress to src in WINDDK and "build -cZ
💻 CPP
📖 第 1 页 / 共 4 页
字号:

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nDEVINFO [%s]: %#x\r\n"), pszLabel, pDevInfo);
    OEMDebugMessage(TEXT("\tflGraphicsCaps: "));
    vDumpFlags(pDevInfo->flGraphicsCaps, gafdDEVINFO_flGraphicsCaps);
    OEMDebugMessage(TEXT("\tcFonts: %ld\r\n"), pDevInfo->cFonts);

    PWSTR psziDitherFormat = L"0";
    switch (pDevInfo->iDitherFormat)
    {
        case BMF_1BPP : psziDitherFormat = L"BMF_1BPP" ; break;
        case BMF_4BPP : psziDitherFormat = L"BMF_4BPP" ; break;
        case BMF_8BPP : psziDitherFormat = L"BMF_8BPP" ; break;
        case BMF_16BPP: psziDitherFormat = L"BMF_16BPP"; break;
        case BMF_24BPP: psziDitherFormat = L"BMF_24BPP"; break;
        case BMF_32BPP: psziDitherFormat = L"BMF_32BPP"; break;
        case BMF_4RLE : psziDitherFormat = L"BMF_4RLE" ; break;
        case BMF_8RLE : psziDitherFormat = L"BMF_8RLE" ; break;
        case BMF_JPEG : psziDitherFormat = L"BMF_JPEG" ; break;
        case BMF_PNG  : psziDitherFormat = L"BMF_PNG " ; break;
    }
    OEMDebugMessage(TEXT("\tiDitherFormat: %s\r\n"), psziDitherFormat);

    OEMDebugMessage(TEXT("\tcxDither: %ld\r\n"), pDevInfo->cxDither);
    OEMDebugMessage(TEXT("\tcyDither: %ld\r\n"), pDevInfo->cyDither);
    OEMDebugMessage(TEXT("\thpalDefault: %#x\r\n"), pDevInfo->hpalDefault);
    OEMDebugMessage(TEXT("\tflGraphicsCaps2: "));
    vDumpFlags(pDevInfo->flGraphicsCaps2, gafdDEVINFO_flGraphicsCaps2);

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

void __stdcall
COemUniDbg::
vDumpBitmapInfoHeader(
    INT                 iDebugLevel,
    PWSTR               pszInLabel,
    BITMAPINFOHEADER    *pBitmapInfoHeader
    )

/*++

Routine Description:

    Dumps the members of a BITMAPINFOHEADER structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pBitmapInfoHeader - pointer to the BITMAPINFOHEADER 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"pBitmapInfoHeader");

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nBITMAPINFOHEADER [%s]: %#x\r\n"), pszLabel, pBitmapInfoHeader);
    OEMDebugMessage(TEXT("\tbiSize: %ld\r\n"), pBitmapInfoHeader->biSize);
    OEMDebugMessage(TEXT("\tbiWidth: %ld\r\n"), pBitmapInfoHeader->biWidth);
    OEMDebugMessage(TEXT("\tbiHeight: %ld\r\n"), pBitmapInfoHeader->biHeight);
    OEMDebugMessage(TEXT("\tbiPlanes: %ld\r\n"), pBitmapInfoHeader->biPlanes);
    OEMDebugMessage(TEXT("\tbiBitCount: %ld\r\n"), pBitmapInfoHeader->biBitCount);

    PWSTR pszbiCompression = L"0";
    switch (pBitmapInfoHeader->biCompression)
    {
        case BI_RGB : pszbiCompression = L"BI_RGB" ; break;
        case BI_RLE8 : pszbiCompression = L"BI_RLE8" ; break;
        case BI_RLE4 : pszbiCompression = L"BI_RLE4" ; break;
        case BI_BITFIELDS: pszbiCompression = L"BI_BITFIELDS"; break;
        case BI_JPEG : pszbiCompression = L"BI_JPEG" ; break;
        case BI_PNG  : pszbiCompression = L"BI_PNG " ; break;
    }
    OEMDebugMessage(TEXT("\tbiCompression: %s\r\n"), pszbiCompression);
    
    OEMDebugMessage(TEXT("\tbiSizeImage: %ld\r\n"), pBitmapInfoHeader->biSizeImage);
    OEMDebugMessage(TEXT("\tbiXPelsPerMeter: %ld\r\n"), pBitmapInfoHeader->biXPelsPerMeter);
    OEMDebugMessage(TEXT("\tbiYPelsPerMeter: %ld\r\n"), pBitmapInfoHeader->biYPelsPerMeter);
    OEMDebugMessage(TEXT("\tbiClrUsed: %ld\r\n"), pBitmapInfoHeader->biClrUsed);
    OEMDebugMessage(TEXT("\tbiClrImportant: %ld\r\n"), pBitmapInfoHeader->biClrImportant);

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

void __stdcall
COemUniDbg::
vDumpPOINTL(
    INT     iDebugLevel,
    PWSTR   pszInLabel,
    POINTL  *pptl
    )

/*++

Routine Description:

    Dumps the members of a POINTL structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pptl - pointer to the POINTL 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"pptl");

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nPOINTL [%s]: %#x (%ld, %ld)\r\n"), pszLabel, pptl, pptl->x, pptl->y);

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

void __stdcall
COemUniDbg::
vDumpRECTL(
    INT     iDebugLevel,
    PWSTR   pszInLabel,
    RECTL   *prcl
    )

/*++

Routine Description:

    Dumps the members of a RECTL structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    prcl - pointer to the RECTL 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"prcl");

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nRECTL [%s]: %#x (%ld, %ld) (%ld, %ld)\r\n"), pszLabel, prcl, prcl->left, prcl->top, prcl->right, prcl->bottom);

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

#if DBG
    DBG_FLAGS gafdXLATEOBJ_flXlate[] = {
        { L"XO_DEVICE_ICM",     XO_DEVICE_ICM},
        { L"XO_FROM_CMYK",      XO_FROM_CMYK},
        { L"XO_HOST_ICM",       XO_HOST_ICM},
        { L"XO_TABLE",          XO_TABLE},
        { L"XO_TO_MONO",        XO_TO_MONO},
        { L"XO_TRIVIAL",            XO_TRIVIAL},
        {NULL, 0}               // The NULL entry is important
    };
#else
    DBG_FLAGS gafdXLATEOBJ_flXlate[] = {
        {NULL, 0}
    };
#endif

void __stdcall
COemUniDbg::
vDumpXLATEOBJ(
    INT         iDebugLevel,
    PWSTR       pszInLabel,
    XLATEOBJ    *pxlo
    )

/*++

Routine Description:

    Dumps the members of a XLATEOBJ structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pxlo - pointer to the XLATEOBJ 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"pxlo");

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nXLATEOBJ [%s]: %#x\r\n"), pszLabel, pxlo);
    OEMDebugMessage(TEXT("\tiUniq: %ld\r\n"), pxlo->iUniq);
    OEMDebugMessage(TEXT("\tflXlate: "));
    vDumpFlags(pxlo->flXlate, gafdXLATEOBJ_flXlate);
    OEMDebugMessage(TEXT("\tiSrcType: %ld [obsolete]\r\n"), pxlo->iSrcType);
    OEMDebugMessage(TEXT("\tiDstType: %ld [obsolete]\r\n"), pxlo->iDstType);
    OEMDebugMessage(TEXT("\tcEntries: %ld\r\n"), pxlo->cEntries);
    if (pxlo->pulXlate)
        OEMDebugMessage(TEXT("\tpulXlate: %#x [%ld]\r\n"), pxlo->pulXlate, *pxlo->pulXlate);
    else
        OEMDebugMessage(TEXT("\tpulXlate: %#x\r\n"), pxlo->pulXlate);

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

#if DBG
    DBG_FLAGS gafdCOLORADJUSTMENT_caFlags[] = {
        { L"CA_NEGATIVE",       CA_NEGATIVE},
        { L"CA_LOG_FILTER",     CA_LOG_FILTER},
        {NULL, 0}               // The NULL entry is important
    };
#else
    DBG_FLAGS gafdCOLORADJUSTMENT_caFlags[] = {
        {NULL, 0}
    };
#endif

void __stdcall
COemUniDbg::
vDumpCOLORADJUSTMENT(
    INT                 iDebugLevel,
    PWSTR               pszInLabel,
    COLORADJUSTMENT *pca
    )

/*++

Routine Description:

    Dumps the members of a COLORADJUSTMENT structure.
    
Arguments:

    iDebugLevel - desired output debug level
    pszInLabel - output label string
    pca - pointer to the COLORADJUSTMENT 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"pca");

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

        // Nothing else to output
        //
        return;
    }
    
    // Format the data
    //
    OEMDebugMessage(TEXT("\nCOLORADJUSTMENT [%s]: %#x\r\n"), pszLabel, pca);
    OEMDebugMessage(TEXT("\tcaSize: %#x\r\n"), pca->caSize);
    OEMDebugMessage(TEXT("\tcaFlags: "));
    if (pca->caFlags)
        vDumpFlags(pca->caFlags, gafdCOLORADJUSTMENT_caFlags);
    else
        OEMDebugMessage(TEXT("NULL\r\n"));

    PWSTR pszcaIlluminantIndex = L"0";
    switch (pca->caIlluminantIndex)
    {
        case ILLUMINANT_DEVICE_DEFAULT: pszcaIlluminantIndex = L"ILLUMINANT_DEVICE_DEFAULT" ; break;
        case ILLUMINANT_A: pszcaIlluminantIndex = L"ILLUMINANT_A [Tungsten lamp]" ; break;
        case ILLUMINANT_B: pszcaIlluminantIndex = L"ILLUMINANT_B [Noon sunlight]" ; break;
        case ILLUMINANT_C: pszcaIlluminantIndex = L"ILLUMINANT_C [NTSC daylight]" ; break;
        case ILLUMINANT_D50: pszcaIlluminantIndex = L"ILLUMINANT_D50 [Normal print]" ; break;
        case ILLUMINANT_D55: pszcaIlluminantIndex = L"ILLUMINANT_D55 [Bond paper print]" ; break;
        case ILLUMINANT_D65: pszcaIlluminantIndex = L"ILLUMINANT_D65 [Standard daylight]" ; break;
        case ILLUMINANT_D75: pszcaIlluminantIndex = L"ILLUMINANT_D75 [Northern daylight]" ; break;
        case ILLUMINANT_F2: pszcaIlluminantIndex = L"ILLUMINANT_F2 [Cool white lamp]" ; break;
    }
    OEMDebugMessage(TEXT("\tcaIlluminantIndex: %s\r\n"), pszcaIlluminantIndex);

    OEMDebugMessage(TEXT("\tcaRedGamma: %d\r\n"), (int)pca->caRedGamma);
    OEMDebugMessage(TEXT("\tcaGreenGamma: %d\r\n"), (int)pca->caGreenGamma);
    OEMDebugMessage(TEXT("\tcaBlueGamma: %d\r\n"), (int)pca->caBlueGamma);
    OEMDebugMessage(TEXT("\tcaReferenceBlack: %d\r\n"), (int)pca->caReferenceBlack);
    OEMDebugMessage(TEXT("\tcaReferenceWhite: %d\r\n"), (int)pca->caReferenceWhite);
    OEMDebugMessage(TEXT("\tcaContrast: %d\r\n"), (int)pca->caContrast);
    OEMDebugMessage(TEXT("\tcaBrightness: %d\r\n"), (int)pca->caBrightness);
    OEMDebugMessage(TEXT("\tcaColorfulness: %d\r\n"), (int)pca->caColorfulness);
    OEMDebugMessage(TEXT("\tcaRedGreenTint: %d\r\n"), (int)pca->caRedGreenTint);

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

⌨️ 快捷键说明

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