diff options
| author | Luke <[email protected]> | 2017-11-28 00:22:11 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2017-11-28 00:22:11 -0800 |
| commit | 79bbbca2f6e37d94fbbbd60d12c5c1e7dde650da (patch) | |
| tree | 793ff943b8b641f95d05401156badd42da4a0f12 /print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp | |
| parent | ed1df9a8b80b154b71b79635e40af75f4f19001c (diff) | |
| parent | 2817004092cee784d4aaf36c045fdb5b0bc09f7e (diff) | |
Merge pull request #1 from Microsoft/master
Updating Local
Diffstat (limited to 'print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp')
| -rw-r--r-- | print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp | 405 |
1 files changed, 405 insertions, 0 deletions
diff --git a/print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp b/print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp new file mode 100644 index 00000000..f7a3d842 --- /dev/null +++ b/print/OEM Printer Customization Plug-in Samples/C++/SyncSet/debug.cpp @@ -0,0 +1,405 @@ +// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF +// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO +// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A +// PARTICULAR PURPOSE. +// +// Copyright 1996 - 2003 Microsoft Corporation. All Rights Reserved. +// +// FILE: Debug.cpp +// +// PURPOSE: Debug functions. +// +// + +#include "precomp.h" +#include "debug.h" + +// This indicates to Prefast that this is a usermode driver file. +_Analysis_mode_(_Analysis_code_type_user_driver_); + +//////////////////////////////////////////////////////// +// INTERNAL DEFINES +//////////////////////////////////////////////////////// + +#define DEBUG_BUFFER_SIZE 1024 +#define PATH_SEPARATOR '\\' +#define MAX_LOOP 10 + +// Determine what level of debugging messages to eject. +#ifdef VERBOSE_MSG + #define DEBUG_LEVEL DBG_VERBOSE +#elif TERSE_MSG + #define DEBUG_LEVEL DBG_TERSE +#elif WARNING_MSG + #define DEBUG_LEVEL DBG_WARNING +#elif ERROR_MSG + #define DEBUG_LEVEL DBG_ERROR +#elif RIP_MSG + #define DEBUG_LEVEL DBG_RIP +#elif NO_DBG_MSG + #define DEBUG_LEVEL DBG_NONE +#else + #define DEBUG_LEVEL DBG_WARNING +#endif + + + +//////////////////////////////////////////////////////// +// EXTERNAL GLOBALS +//////////////////////////////////////////////////////// + +INT giDebugLevel = DEBUG_LEVEL; + + + + +//////////////////////////////////////////////////////// +// INTERNAL PROTOTYPES +//////////////////////////////////////////////////////// + +static BOOL DebugMessageV(LPCSTR lpszMessage, va_list arglist); +static BOOL DebugMessageV(DWORD dwSize, LPCWSTR lpszMessage, va_list arglist); + + + + +////////////////////////////////////////////////////////////////////////// +// Function: DebugMessageV +// +// Description: Outputs variable argument debug string. +// +// +// Parameters: +// +// dwSize Size of temp buffer to hold formated string. +// +// lpszMessage Format string. +// +// arglist Variable argument list.. +// +// +// Returns: +// +// +// Comments: +// +// +////////////////////////////////////////////////////////////////////////// + +static BOOL DebugMessageV(LPCSTR lpszMessage, va_list arglist) +{ + DWORD dwSize = DEBUG_BUFFER_SIZE; + DWORD dwLoop = 0; + LPSTR lpszMsgBuf = NULL; + HRESULT hr; + + + // Parameter checking. + if( (NULL == lpszMessage) + || + (0 == dwSize) + ) + { + return FALSE; + } + + do + { + // Allocate memory for message buffer. + if(NULL != lpszMsgBuf) + { + delete[] lpszMsgBuf; + dwSize *= 2; + } + lpszMsgBuf = new CHAR[dwSize + 1]; + if(NULL == lpszMsgBuf) + { + return FALSE; + } + + hr = StringCbVPrintfA(lpszMsgBuf, (dwSize + 1) * sizeof(CHAR), lpszMessage, arglist); + + // Pass the variable parameters to wvsprintf to be formated. + } while (FAILED(hr) && (STRSAFE_E_INSUFFICIENT_BUFFER == hr) && (++dwLoop < MAX_LOOP) ); + + // Dump string to Debug output. + OutputDebugStringA(lpszMsgBuf); + + // Cleanup. + delete[] lpszMsgBuf; + + return SUCCEEDED(hr); +} + + +////////////////////////////////////////////////////////////////////////// +// Function: DebugMessageV +// +// Description: Outputs variable argument debug string. +// +// +// Parameters: +// +// dwSize Size of temp buffer to hold formated string. +// +// lpszMessage Format string. +// +// arglist Variable argument list.. +// +// +// Returns: +// +// +// Comments: +// +// +////////////////////////////////////////////////////////////////////////// + +static BOOL DebugMessageV(DWORD dwSize, LPCWSTR lpszMessage, va_list arglist) +{ + LPWSTR lpszMsgBuf; + HRESULT hResult; + + + // Parameter checking. + if( (NULL == lpszMessage) + || + (0 == dwSize) + ) + { + return FALSE; + } + + // Allocate memory for message buffer. + lpszMsgBuf = new WCHAR[dwSize + 1]; + if(NULL == lpszMsgBuf) + return FALSE; + + // Pass the variable parameters to wvsprintf to be formated. + hResult = StringCbVPrintfW(lpszMsgBuf, (dwSize + 1) * sizeof(WCHAR), lpszMessage, arglist); + + // Dump string to debug output. + OutputDebugStringW(lpszMsgBuf); + + // Clean up. + delete[] lpszMsgBuf; + + return SUCCEEDED(hResult); +} + + +////////////////////////////////////////////////////////////////////////// +// Function: DebugMessage +// +// Description: Outputs variable argument debug string. +// +// +// Parameters: +// +// lpszMessage Format string. +// +// +// Returns: +// +// +// Comments: +// +// +////////////////////////////////////////////////////////////////////////// + +BOOL DebugMessage(LPCSTR lpszMessage, ...) +{ + BOOL bResult; + va_list VAList; + + + // Pass the variable parameters to DebugMessageV for processing. + va_start(VAList, lpszMessage); + bResult = DebugMessageV(lpszMessage, VAList); + va_end(VAList); + + return bResult; +} + + +////////////////////////////////////////////////////////////////////////// +// Function: DebugMessage +// +// Description: Outputs variable argument debug string. +// +// +// Parameters: +// +// lpszMessage Format string. +// +// +// Returns: +// +// +// Comments: +// +// +////////////////////////////////////////////////////////////////////////// + +BOOL DebugMessage(LPCWSTR lpszMessage, ...) +{ + BOOL bResult; + va_list VAList; + + + // Pass the variable parameters to DebugMessageV to be processed. + va_start(VAList, lpszMessage); + bResult = DebugMessageV(MAX_PATH, lpszMessage, VAList); + va_end(VAList); + + return bResult; +} + +void Dump(PPUBLISHERINFO pPublisherInfo) +{ + VERBOSE(TEXT("pPublisherInfo:\r\n")); + if(NULL == pPublisherInfo) + { + VERBOSE(TEXT("\tpPublisherInfo is NULL!\r\n")); + return; + } + VERBOSE(TEXT("\tdwMode = %#x\r\n"), pPublisherInfo->dwMode); + VERBOSE(TEXT("\twMinoutlinePPEM = %d\r\n"), pPublisherInfo->wMinoutlinePPEM); + VERBOSE(TEXT("\twMaxbitmapPPEM = %d\r\n"), pPublisherInfo->wMaxbitmapPPEM); +} + +void Dump(POEMDMPARAM pOemDMParam) +{ + VERBOSE(TEXT("pOemDMParam:\r\n")); + if(NULL == pOemDMParam) + { + VERBOSE(TEXT("\tpOemDMParam is NULL!\r\n")); + return; + } + VERBOSE(TEXT("\tcbSize = %d\r\n"), pOemDMParam->cbSize); + VERBOSE(TEXT("\tpdriverobj = %#x\r\n"), pOemDMParam->pdriverobj); + VERBOSE(TEXT("\thPrinter = %#x\r\n"), pOemDMParam->hPrinter); + VERBOSE(TEXT("\thModule = %#x\r\n"), pOemDMParam->hModule); + VERBOSE(TEXT("\tpPublicDMIn = %#x\r\n"), pOemDMParam->pPublicDMIn); + VERBOSE(TEXT("\tpPublicDMOut = %#x\r\n"), pOemDMParam->pPublicDMOut); + VERBOSE(TEXT("\tpOEMDMIn = %#x\r\n"), pOemDMParam->pOEMDMIn); + VERBOSE(TEXT("\tpOEMDMOut = %#x\r\n"), pOemDMParam->pOEMDMOut); + VERBOSE(TEXT("\tcbBufSize = %d\r\n"), pOemDMParam->cbBufSize); +} + +void Dump(PPROPSHEETUI_INFO pPSUIInfo) +{ + VERBOSE(TEXT("pPSUIInfo:\r\n")); + if(NULL == pPSUIInfo) + { + VERBOSE(TEXT("\tpPSUIInfo is NULL!\r\n")); + return; + } + VERBOSE(TEXT("\tcbSize = %d\r\n"), pPSUIInfo->cbSize); + VERBOSE(TEXT("\tVersion = %#x\r\n"), pPSUIInfo->Version); + VERBOSE(TEXT("\tFlags = %#x\r\n"), pPSUIInfo->Flags); + VERBOSE(TEXT("\tReason = %d\r\n"), pPSUIInfo->Reason); + VERBOSE(TEXT("\thComPropSheet = %#x\r\n"), pPSUIInfo->hComPropSheet); + VERBOSE(TEXT("\tpfnComPropSheet = %#x\r\n"), pPSUIInfo->pfnComPropSheet); + VERBOSE(TEXT("\tlParamInit = %#x\r\n"), pPSUIInfo->lParamInit); + VERBOSE(TEXT("\tUserData = %#x\r\n"), pPSUIInfo->UserData); + VERBOSE(TEXT("\tResult = %#x\r\n"), pPSUIInfo->Result); +} + +void Dump(POPTITEM pOptItem) +{ + VERBOSE(TEXT("pOptItem:\r\n")); + if(NULL == pOptItem) + { + VERBOSE(TEXT("\tpOptItem is NULL!\r\n")); + return; + } + VERBOSE(TEXT("\tcbSize = %d\r\n"), pOptItem->cbSize); + VERBOSE(TEXT("\tLevel = %d\r\n"), pOptItem->Level); + VERBOSE(TEXT("\tDlgPageIdx = %d\r\n"), pOptItem->DlgPageIdx); + VERBOSE(TEXT("\tFlags = 0x%x\r\n"), pOptItem->Flags); + VERBOSE(TEXT("\tUserData = 0x%p\r\n"), pOptItem->UserData); + VERBOSE(TEXT("\tpName = %s\r\n"), pOptItem->pName ? pOptItem->pName : TEXT("<NULL>")); + VERBOSE(TEXT("\tpSel = 0x%p\r\n"), pOptItem->pSel); + VERBOSE(TEXT("\tpExtChkBox = 0x%p\r\n"), pOptItem->pExtChkBox); + VERBOSE(TEXT("\tpExtChkBox = 0x%p\r\n"), pOptItem->pExtChkBox); + VERBOSE(TEXT("\tHelpIndex = 0x%x\r\n"), pOptItem->HelpIndex); + VERBOSE(TEXT("\tDMPubID = 0x%x\r\n"), pOptItem->DMPubID); + VERBOSE(TEXT("\tUserItemID = 0x%x\r\n"), pOptItem->UserItemID); + VERBOSE(TEXT("\twReserved = 0x%x\r\n"), pOptItem->wReserved); + VERBOSE(TEXT("\tpOIExt = 0x%p\r\n"), pOptItem->pOIExt); + + Dump(pOptItem->pOptType); +} + +void Dump(POPTTYPE pOptType) +{ + VERBOSE(TEXT("\tpOptType:\r\n")); + if(NULL == pOptType) + { + VERBOSE(TEXT("\t\tpOptType is NULL!\r\n")); + return; + } + VERBOSE(TEXT("\t\tcbSize = %d\r\n"), pOptType->cbSize); + VERBOSE(TEXT("\t\tType = 0x%x\r\n"), pOptType->Type); + VERBOSE(TEXT("\t\tFlags = 0x%x\r\n"), pOptType->Flags); + VERBOSE(TEXT("\t\tCount = %d\r\n"), pOptType->Count); + VERBOSE(TEXT("\t\tCount = 0x%x\r\n"), pOptType->BegCtrlID); + VERBOSE(TEXT("\t\tStyle = 0x%x\r\n"), pOptType->Style); + + Dump(pOptType->pOptParam, pOptType->Count); +} + +void Dump(POPTPARAM pOptParam, WORD wCount) +{ + if(NULL == pOptParam) + { + VERBOSE(TEXT("\t\tpOptParam is NULL!\r\n")); + return; + } + + for(WORD wIndex = 0; wIndex < wCount; ++wIndex) + { + VERBOSE(TEXT("\t\tpOptParam[wIndex]:\r\n")); + VERBOSE(TEXT("\t\t\tcbSize = %d\r\n"), pOptParam[wIndex].cbSize); + VERBOSE(TEXT("\t\t\tFlags = 0x%x\r\n"), pOptParam[wIndex].Flags); + VERBOSE(TEXT("\t\t\tStyle = 0x%x\r\n"), pOptParam[wIndex].Style); + VERBOSE(TEXT("\t\t\tpData = 0x%p\r\n"), pOptParam[wIndex].pData); + VERBOSE(TEXT("\t\t\tIconID = 0x%p\r\n"), pOptParam[wIndex].IconID); + VERBOSE(TEXT("\t\t\tlParam = 0x%p\r\n"), pOptParam[wIndex].lParam); + } +} + + +PCSTR +StripDirPrefixA( + IN PCSTR pstrFilename + ) + +/*++ + +Routine Description: + + Strip the directory prefix off a filename (ANSI version) + +Arguments: + + pstrFilename - Pointer to filename string + +Return Value: + + Pointer to the last component of a filename (without directory prefix) + +--*/ + +{ + PCSTR pstr; + + pstr = strrchr(pstrFilename, PATH_SEPARATOR); + if (pstr) + return pstr + 1; + + return pstrFilename; +} + + |
