/******************************Module*Header***********************************\ * Module Name: registry.c * * Routines to initialize the registry and lookup string values. * * Copyright (c) 1994-1998 3Dlabs Inc. Ltd. All rights reserved. * Copyright (c) 1995-1999 Microsoft Corporation. All rights reserved. * \******************************************************************************/ #include "precomp.h" //------------------------------------------------------------------------------ // BOOL bRegistryQueryUlong // // Take a string and look up its value in the registry. We assume that the // value fits into 4 bytes. Fill in the supplied DWORD pointer with the value. // // Returns: // TRUE if we found the string, FALSE if not. Note, if we failed to init // the registry the query funtion will simply fail and we act as though // the string was not defined. // //------------------------------------------------------------------------------ BOOL bRegistryQueryUlong(PPDev ppdev, LPWSTR valueStr, PULONG pData) { ULONG ReturnedDataLength; ULONG inSize; ULONG outData; PWCHAR inStr; // get the string length including the NULL for (inSize = 2, inStr = valueStr; *inStr != 0; ++inStr, inSize += 2); if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_QUERY_REGISTRY_DWORD, valueStr, // input buffer inSize, &outData, // output buffer sizeof(ULONG), &ReturnedDataLength)) { DBG_GDI((1, "bQueryRegistryValueUlong failed")); return(FALSE); } *pData = outData; DBG_GDI((1, "bQueryRegistryValueUlong returning 0x%x (ReturnedDataLength = %d)", *pData, ReturnedDataLength)); return(TRUE); } //------------------------------------------------------------------------------ // BOOL bRegistryRetrieveGammaLUT // // Look up the registry to reload the saved gamma LUT into memory. // // Returns: // TRUE if we found the string, FALSE if not. Note, if we failed to init // the registry the query funtion will simply fail and we act as though // the string was not defined. // //------------------------------------------------------------------------------ BOOL bRegistryRetrieveGammaLUT( PPDev ppdev, PVIDEO_CLUT pScreenClut ) { ULONG ReturnedDataLength; if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_REG_RETRIEVE_GAMMA_LUT, NULL, // input buffer 0, pScreenClut, // output buffer MAX_CLUT_SIZE, &ReturnedDataLength)) { DBG_GDI((1, "IOCTL_VIDEO_REG_RETRIEVE_GAMMA_LUT failed")); return(FALSE); } return(TRUE); } //------------------------------------------------------------------------------ // BOOL bRegistrySaveGammaLUT // // Save the gamma lut in the registry for later reloading. // // Returns: // TRUE if we found the string, FALSE if not. Note, if we failed to init // the registry the query funtion will simply fail and we act as though // the string was not defined. // //------------------------------------------------------------------------------ BOOL bRegistrySaveGammaLUT( PPDev ppdev, PVIDEO_CLUT pScreenClut ) { ULONG ReturnedDataLength; if (EngDeviceIoControl(ppdev->hDriver, IOCTL_VIDEO_REG_SAVE_GAMMA_LUT, pScreenClut, // input buffer MAX_CLUT_SIZE, NULL, // output buffer 0, &ReturnedDataLength)) { DBG_GDI((1, "IOCTL_VIDEO_REG_SAVE_GAMMA_LUT failed")); return(FALSE); } return(TRUE); }