You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
4.1 KiB
123 lines
4.1 KiB
/******************************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);
|
|
}
|
|
|