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.
138 lines
4.3 KiB
138 lines
4.3 KiB
/******************************Module*Header**********************************\
|
|
*
|
|
* *******************
|
|
* * GDI SAMPLE CODE *
|
|
* *******************
|
|
*
|
|
* Module Name: registry.c
|
|
*
|
|
* Content: Routines to initialize the registry and lookup string values.
|
|
*
|
|
* Copyright (c) 1994-1999 3Dlabs Inc. Ltd. All rights reserved.
|
|
* Copyright (c) 1995-2003 Microsoft Corporation. All rights reserved.
|
|
\*****************************************************************************/
|
|
|
|
#include "precomp.h"
|
|
|
|
/******************************Public*Data*Struct**************************\
|
|
* BOOL bGlintQueryRegistryValueUlong
|
|
*
|
|
* 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
|
|
bGlintQueryRegistryValueUlong(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))
|
|
{
|
|
DISPDBG((WRNLVL, "bGlintQueryRegistryValueUlong failed"));
|
|
return(FALSE);
|
|
}
|
|
|
|
*pData = outData;
|
|
DISPDBG((DBGLVL, "bGlintQueryRegistryValueUlong "
|
|
"returning 0x%x (ReturnedDataLength = %d)",
|
|
*pData, ReturnedDataLength));
|
|
return(TRUE);
|
|
}
|
|
|
|
//@@BEGIN_DDKSPLIT
|
|
#if 0
|
|
/******************************Public*Data*Struct**************************\
|
|
* BOOL bGlintRegistryRetrieveGammaLUT
|
|
*
|
|
* 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
|
|
bGlintRegistryRetrieveGammaLUT(
|
|
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))
|
|
{
|
|
DISPDBG((-1, "IOCTL_VIDEO_REG_RETRIEVE_GAMMA_LUT failed"));
|
|
return(FALSE);
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
/******************************Public*Data*Struct**************************\
|
|
* BOOL bGlintRegistrySaveGammaLUT
|
|
*
|
|
* 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
|
|
bGlintRegistrySaveGammaLUT(
|
|
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))
|
|
{
|
|
DISPDBG((-1, "IOCTL_VIDEO_REG_SAVE_GAMMA_LUT failed"));
|
|
return(FALSE);
|
|
}
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
ULONG
|
|
GetOGLDriverVersion(PPDEV ppdev)
|
|
{
|
|
return(2);
|
|
}
|
|
#endif
|
|
//@@END_DDKSPLIT
|