/*++

Copyright (c) 1997-1999 Microsoft Corporation

Revision History:

--*/

//
// Is the registration of the view namespace and view provider required of
// every mof or can it be done by WMI setup ????
//
#pragma namespace("\\\\.\\root")


instance of __Namespace
{
    Name = "ViewNamespace" ;
};

#pragma namespace("\\\\.\\root\\viewnamespace")
instance of __Win32Provider as $DataProv
{
    Name = "MS_VIEW_INSTANCE_PROVIDER";
    ClsId = "{AA70DDF4-E11C-11D1-ABB0-00C04FD9159E}";
    ImpersonationLevel = 1;
    PerUserInitialization = "True";
    
};

instance of __InstanceProviderRegistration
{
    Provider = $DataProv;
    SupportsPut = True;
    SupportsGet = True;
    SupportsDelete = True;
    SupportsEnumeration = True;
    QuerySupportLevels = {"WQL:UnarySelect"};
};

instance of __MethodProviderRegistration
{
    Provider = $DataProv;
};

//
// End view provider registration


//
// Keyboard device extension class
//
[
 Dynamic,
 Provider("MS_VIEW_INSTANCE_PROVIDER"),
 ViewSpaces{"\\\\.\\root\\wmi",
            "\\\\.\\root\\wmi",
            "\\\\.\\root\\cimv2"},
 ViewSources{"Select InstanceName, DataQueueSize, ErrorCount, Indicators, FunctionKeys from MSKeyboard_PortInformation",
             "Select InstanceName, PnPDeviceId from MSWmi_PnPDeviceId",
             "Select PNPDeviceId, NumberOfFunctionKeys from Win32_Keyboard"},
 JoinOn("Win32_Keyboard.PNPDeviceId = MSWmi_PnPDeviceId.PnPDeviceId and MSKeyboard_PortInformation.InstanceName = MSWmi_PnPDeviceId.InstanceName")
]
class Win32_KeyboardExtension
{
    [PropertySources{"InstanceName", "", ""},key]
    string WdmKeyboardInstanceName;

    [PropertySources{"", "InstanceName", ""},key]
    string WdmPnPInstanceName;

    [PropertySources{"", "PnPDeviceId", ""}]
    string WdmPnPDeviceId;

    [PropertySources{"", "", "PNPDeviceId"}, key]
    string CimPnPDeviceId;

    [PropertySources{"DataQueueSize", "", ""},
     Description("The DataQueueSize property indicates the size of the data queue.")
    ]
    uint32 DataQueueSize;

    [PropertySources{"ErrorCount", "", ""},
     Description("Number of errors that occured on this device")
    ]
    uint32 ErrorCount;

    [PropertySources{"Indicators", "", ""},
     Description("The NumberOfIndicators property indicates the number of indicator leds on the keyboard.")
    ]
    uint32 Indicators;

    [PropertySources{"FunctionKeys", "", ""},
     Description("The NumberOfFunctionKeys property indicates the number of function keys on the keyboard.")
    ]
    uint32 WdmFunctionKeys;

    [PropertySources{"", "", "NumberOfFunctionKeys"}
    ]
    uint16 CimFunctionKeys;

};

