/**************************************************************************\
* Module Name: ntreg.hxx
*
* CRegistrySettings class
*
*  This class handles getting registry information for display driver
*  information.
*
* Copyright (c) Microsoft Corp.  1992-1998 All Rights Reserved
*
\**************************************************************************/


class CRegistrySettings
{
private:

    //
    // Data members
    //

    HKEY   _hkVideoReg;
    LPTSTR _pszDrvName;
    LPTSTR _pszKeyName;
    LPTSTR _pszDeviceInstanceId;
    DWORD  _dwDevInst;
    
    //
    // Helper functions
    //

    VOID InitDeviceInstanceID(LPTSTR pstrDeviceKey);
    BOOL GetDevInfoDataFromInterfaceName(LPWSTR pwInterfaceName,
                                         HDEVINFO* phDevInfo,
                                         PSP_DEVINFO_DATA pDevInfoData);
    
public:

    CRegistrySettings(LPTSTR pstrDeviceKey);
    ~CRegistrySettings();

    VOID GetHardwareInformation(PDISPLAY_REGISTRY_HARDWARE_INFO pInfo);
    
    //
    // THE CALLER IS RESPONSIBLE TO CLOSE THE RETURNED HKEY
    //
    
    HKEY OpenDrvRegKey();
    
    //
    // THESE FUNCTIONS DO NOT RETURN A CLONE!
    // THE CALLER MUST COPY IT IF IT NEEDS TO KEEP IT AROUND!
    // DO NOT FREE THE POINTER RETURNED FROM THIS CALL!
    //

    LPTSTR GetMiniPort(void)         { return _pszDrvName; }
    LPTSTR GetDeviceInstanceId()     { return _pszDeviceInstanceId; }
};