HRESULT hrOEMDevMode(DWORD dwMode, POEMDMPARAM pOemDMParam) { POEMDEV pOEMDevIn; POEMDEV pOEMDevOut; // Verify parameters. if( (NULL == pOemDMParam) || ( (OEMDM_SIZE != dwMode) && (OEMDM_DEFAULT != dwMode) && (OEMDM_CONVERT != dwMode) && (OEMDM_MERGE != dwMode) ) ) { ERR(ERRORTEXT("DevMode() ERROR_INVALID_PARAMETER.\r\n")); VERBOSE(DLLTEXT("\tdwMode = %d, pOemDMParam = %#lx.\r\n"), dwMode, pOemDMParam); SetLastError(ERROR_INVALID_PARAMETER); return E_FAIL; } // Cast generic (i.e. PVOID) to OEM private devomode pointer type. pOEMDevIn = (POEMDEV) pOemDMParam->pOEMDMIn; pOEMDevOut = (POEMDEV) pOemDMParam->pOEMDMOut; switch(dwMode) { case OEMDM_SIZE: pOemDMParam->cbBufSize = sizeof(OEMDEV); break; case OEMDM_DEFAULT: pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; pOEMDevOut->dwDriverData = 0; pOEMDevOut->dwAdvancedData = 0; VERBOSE(DLLTEXT("pOEMDevOut after setting default values:\r\n")); Dump(pOEMDevOut); break; case OEMDM_CONVERT: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut, pOemDMParam->cbBufSize); break; case OEMDM_MERGE: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut, pOemDMParam->cbBufSize); MakeOEMDevmodeValid(pOEMDevOut); break; } Dump(pOemDMParam); return S_OK; }
HRESULT hrOEMDevMode(DWORD dwMode, POEMDMPARAM pOemDMParam) { HRESULT hResult = S_OK; POEMDEV pOEMDevIn = NULL; POEMDEV pOEMDevOut = NULL; // Verify parameters. if( (NULL == pOemDMParam) || ( (OEMDM_SIZE != dwMode) && (OEMDM_DEFAULT != dwMode) && (OEMDM_CONVERT != dwMode) && (OEMDM_MERGE != dwMode) ) ) { ERR(DLLTEXT("DevMode() ERROR_INVALID_PARAMETER.\r\n")); SetLastError(ERROR_INVALID_PARAMETER); return E_FAIL; } // Cast generic (i.e. PVOID) to OEM private devomode pointer type. pOEMDevIn = (POEMDEV) pOemDMParam->pOEMDMIn; pOEMDevOut = (POEMDEV) pOemDMParam->pOEMDMOut; switch(dwMode) { case OEMDM_SIZE: pOemDMParam->cbBufSize = sizeof(OEMDEV); break; case OEMDM_DEFAULT: pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; pOEMDevOut->bEnabled = WATER_MARK_DEFAULT_ENABLED; pOEMDevOut->dfRotate = WATER_MARK_DEFAULT_ROTATION; pOEMDevOut->dwFontSize = WATER_MARK_DEFAULT_FONTSIZE; pOEMDevOut->crTextColor = WATER_MARK_DEFAULT_COLOR; hResult = StringCbCopyW(pOEMDevOut->szWaterMark, sizeof(pOEMDevOut->szWaterMark), WATER_MARK_DEFAULT_TEXT); break; case OEMDM_CONVERT: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); break; case OEMDM_MERGE: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); MakeOEMDevmodeValid(pOEMDevOut); break; } return hResult; }
//+--------------------------------------------------------------------------- // // Member: // ::hrOEMDevMode // // Synopsis: // Performs operation on UI Plugins Private DevMode Members. // Called via IOemUI::DevMode // // Returns: // S_OK or E_FAIL. For more detailed failure info, // check GetLastError // // Last error: // ERROR_INVALID_PARAMETER // // //---------------------------------------------------------------------------- HRESULT hrOEMDevMode( DWORD dwMode, // Indicates which operation should be performed _Inout_ POEMDMPARAM pOemDMParam // contains various data structures needed by this // routine. The usage of this struct is determined by // the dwMode flag. ) { VERBOSE(DLLTEXT("hrOEMDevMode entry.")); HRESULT hr = S_OK; // Return value. // // Verify parameters. // if ((NULL == pOemDMParam) || ((OEMDM_SIZE != dwMode) && (OEMDM_DEFAULT != dwMode) && (OEMDM_CONVERT != dwMode) && (OEMDM_MERGE != dwMode))) { ERR(ERRORTEXT("DevMode() ERROR_INVALID_PARAMETER.\r\n")); ERR(DLLTEXT("\tdwMode = %d, pOemDMParam = %#lx.\r\n"), dwMode, pOemDMParam); SetLastError(ERROR_INVALID_PARAMETER); hr = E_FAIL; } else { POEMDEV pOEMDevIn = (POEMDEV) pOemDMParam->pOEMDMIn;; // Pointer to the supplied OEM devmode data, if applicable // based on dwMode. POEMDEV pOEMDevOut = (POEMDEV) pOemDMParam->pOEMDMOut;; // Pointer to the DEVMODE data that this routine is // expected to configure, if applicable based on dwMode. switch (dwMode) { // // The Method should return the size of the memory allocation // needed to store the UI plugin Private DEVMODE. // case OEMDM_SIZE: pOemDMParam->cbBufSize = sizeof(OEMDEV); break; // //Should fill the Private DEVMODE with the default values. // case OEMDM_DEFAULT: // //OEM_DMEXTRAHEADER Members // pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; break; // // The method should convert private DEVMODE members to // the current version, if necessary. // case OEMDM_CONVERT: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); break; // // The method should validate the information contained in private // DEVMODE members and merge validated values into a private // DEVMODE structure containing default values // case OEMDM_MERGE: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); MakeOEMDevmodeValid(pOEMDevOut); break; } } return hr; }
HRESULT hrOEMDevMode(DWORD dwMode, POEMDMPARAM pOemDMParam) { POEMDEV pOEMDevIn; POEMDEV pOEMDevOut; // Verify parameters. if( (NULL == pOemDMParam) || ( (OEMDM_SIZE != dwMode) && (OEMDM_DEFAULT != dwMode) && (OEMDM_CONVERT != dwMode) && (OEMDM_MERGE != dwMode) ) ) { ERR(ERRORTEXT("DevMode() ERROR_INVALID_PARAMETER.\r\n")); VERBOSE(DLLTEXT("\tdwMode = %d, pOemDMParam = %#lx.\r\n"), dwMode, pOemDMParam); SetLastError(ERROR_INVALID_PARAMETER); return E_FAIL; } // Cast generic (i.e. PVOID) to OEM private devomode pointer type. pOEMDevIn = (POEMDEV) pOemDMParam->pOEMDMIn; pOEMDevOut = (POEMDEV) pOemDMParam->pOEMDMOut; switch(dwMode) { // //The Method should return the size of the memory allocation needed to store the UI plugin Private DEVMODE. // case OEMDM_SIZE: pOemDMParam->cbBufSize = sizeof(OEMDEV); break; // //Should fill the Private DEVMODE with the default values. // case OEMDM_DEFAULT: // //OEM_DMEXTRAHEADER Members // pOEMDevOut->dmOEMExtra.dwSize = sizeof(OEMDEV); pOEMDevOut->dmOEMExtra.dwSignature = OEM_SIGNATURE; pOEMDevOut->dmOEMExtra.dwVersion = OEM_VERSION; // //Private members // pOEMDevOut->dwDriverData = 0; pOEMDevOut->dwAdvancedData = 0; VERBOSE(DLLTEXT("pOEMDevOut after setting default values:\r\n")); Dump(pOEMDevOut); break; // //The method should convert private DEVMODE members to the current version, if necessary. // case OEMDM_CONVERT: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); break; // //The method should validate the information contained in private DEVMODE members and merge validated values into a private DEVMODE structure containing default values // case OEMDM_MERGE: ConvertOEMDevmode(pOEMDevIn, pOEMDevOut); MakeOEMDevmodeValid(pOEMDevOut); break; } Dump(pOemDMParam); return S_OK; }