Sample Code
Windows Driver Samples/ OEM Printer Customization Plug-in Samples/ C++/ bitmap/ devmode.cpp/
// 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 1998 - 2003 Microsoft Corporation. All Rights Reserved. // // FILE: Devmode.cpp // // // PURPOSE: Helper functions for manipulating the DEVMODE. These are commonly // shared by UI & rendering modules // #include "precomp.h" #include "bitmap.h" #include "debug.h" #include "devmode.h" // This indicates to Prefast that this is a usermode driver file. _Analysis_mode_(_Analysis_code_type_user_driver_); BOOL bConvertOEMDevmode( PCOEMDEV pOEMDevIn, POEMDEV pOEMDevOut ) /*++ Routine Description: Converts private DEVMODE members to the current version. Arguments: pOEMDevIn - pointer to OEM private devmode pOEMDevOut - pointer to OEM private devmode Return Value: TRUE if successful, FALSE if there is an error --*/ { if( (NULL == pOEMDevIn) || (NULL == pOEMDevOut) ) { ERR("ConvertOEMDevmode() invalid parameters.\r\n"); return FALSE; } // Check OEM Signature, if it doesn't match ours, // then just assume DMIn is bad and use defaults. if(pOEMDevIn->dmOEMExtra.dwSignature == pOEMDevOut->dmOEMExtra.dwSignature) { // Set the devmode defaults so that anything the isn't copied over will // be set to the default value. pOEMDevOut->dwDriverData = 0; // Copy the old structure in to the new using which ever size is the smaller. // Devmode maybe from newer Devmode (not likely since there is only one), or // Devmode maybe a newer Devmode, in which case it maybe larger, // but the first part of the structure should be the same. // DESIGN ASSUMPTION: the private DEVMODE structure only gets added to; // the fields that are in the DEVMODE never change only new fields get added to the end. memcpy(pOEMDevOut, pOEMDevIn, __min(pOEMDevOut->dmOEMExtra.dwSize, pOEMDevIn->dmOEMExtra.dwSize)); // Re-fill in the size and version fields to indicated // that the DEVMODE is the current private DEVMODE version. pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; } else { // Don't know what the input DEVMODE is, so just use defaults. pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; pOEMDevOut->dwDriverData = 0; } return TRUE; } BOOL bMakeOEMDevmodeValid( POEMDEV pOEMDevmode ) /*++ Routine Description: Ensures that private OEM devmode members are valid. Arguments: pOEMDevmode - pointer to OEM private devmode Return Value: TRUE if successful, FALSE if there is an error --*/ { if(NULL == pOEMDevmode) { return FALSE; } // ASSUMPTION: pOEMDevmode is large enough to contain OEMDEV structure. // Make sure that dmOEMExtra indicates the current OEMDEV structure. pOEMDevmode->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevmode->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevmode->dmOEMExtra.dwVersion = OEM_VERSION; // Set driver data. pOEMDevmode->dwDriverData = 0; return TRUE; }
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials