//	WhqlProvider.MOF
//	WMI classes definitions for the WHQL provider.
//	The provider is used to get signing info. about all device drivers
//
//	This mof defines two classes.Win32_PnPSignedDriver & Win32_PnPSignedDriverCIMDataFile
//
//===================================================================

#pragma namespace("\\\\.\\ROOT\\CIMV2") 

//*************************************************************
//***   Registers Provider									***
//*************************************************************
instance of __Win32Provider as $P
{
    Name = "WhqlProvider";
    ClsId = "{A0F93E27-F05D-4153-A151-F3720369A4C7}";	
};

instance of __InstanceProviderRegistration
{
    Provider = $P;
    SupportsGet = TRUE;
    SupportsPut = FALSE;
    SupportsDelete = FALSE;
    SupportsEnumeration = TRUE;
    QuerySupportLevels = NULL;
};

instance of __MethodProviderRegistration
{
    Provider = $P;
};


//This would actually store info about the Driver.
[provider("WhqlProvider"): ToInstance ToSubClass, dynamic: ToInstance ToSubClass,
Description(
"The Win32_PnPSignedDriver class provides digital signature information about drivers "): ToSubClass ]
class Win32_PnPSignedDriver
{
	[key , read: ToInstance ToSubClass ,
	Decription("The PnPID property is the Plug & Play ID of the device"): ToSubClass ]
		String		PnPID;
	
	[read: ToInstance ToSubClass , 
	Decription("The ClassGUID  property is the ClassGUID of the device"): ToSubClass ]		
		String		ClassGuid;

	[Decription("The IsSigned property is the signature status of driver "
	"that is it represents whether the driver is signed or not")]		
		Boolean		IsSigned;

	[read: ToInstance ToSubClass , 
	Decription("The Signer property is the signer of driver if it is signed"): ToSubClass ]
		String		Signer;

	[read: ToInstance ToSubClass , 
	Decription("The InfFile property is the name of the Inf file which installed this device"): ToSubClass ]		
		String		InfPath;

	[read: ToInstance ToSubClass , 
	Decription("The DriverVersion property is the version of the driver "): ToSubClass ]		
		String		DriverVersion;

	[read: ToInstance ToSubClass , 
	Decription("The DriverDate property is the Date of the driver "): ToSubClass ]		
		String		DriverDate;

	[read: ToInstance ToSubClass , 
	Decription("The Description property is the Description of the driver "): ToSubClass ]		
		//String		DriverDesc;	
		String		Description;	

	[read: ToInstance ToSubClass , 
	Decription("The ProviderName property is the Provider of the driver "): ToSubClass ]		
		String		ProviderName;

	[read: ToInstance ToSubClass , 
	Decription("The HardwareID property array is the array of HardwareIDs of the driver "): ToSubClass ]		
		String		HardWareID[];		

	//Other attributes as reqd by WHQL.
	
	[read: ToInstance ToSubClass , 
	Decription("The DrvTool property is an authenticated attribute stored in drivers' cat file which represents"
	"Version # of the tool that generated .CAT file."): ToSubClass ]		
		String		DrvTool;	

	[read: ToInstance ToSubClass , 
	Decription("The SerialNumber property is an authenticated attribute stored in drivers' cat file which represents"
	"Self-Sign job ID"): ToSubClass ]		
		String		SerialNumber;

	[read: ToInstance ToSubClass , 
	Decription("The KitVer property is an authenticated attribute stored in drivers' cat file which represents "
	"Test Kit version driver set passed testing with? Note: KV_Unknown means No Test Program"): ToSubClass ]		
		String		KitVer;

	[read: ToInstance ToSubClass , 
	Decription("The OSBuild property is an authenticated attribute stored in drivers' cat file which represents "
	"Which build of OS did driver set pass testing with?"): ToSubClass ]		
		String		OSBuild;

	[read: ToInstance ToSubClass , 
	Decription("The OSAttr property is an authenticated attribute stored in drivers' cat file whch represents OS Attribute "): ToSubClass ]		
		String		OSAttr;

	[read: ToInstance ToSubClass , 
	Decription("OSSP is an authenticated attribute stored in drivers' cat file which represents "
	"Which OS Service Pack did driver set pass testing with?"): ToSubClass ]		
		String		OSSP;

	[read: ToInstance ToSubClass , 
	Decription("The HWIDxxx property is an authenticated attribute stored in drivers' cat file which represents"
	"Hardware Ids that have actually passed testing.  Note: there number of hardware Ids is practically unlimited "): ToSubClass ]		
		String		HWIDxxx;

	[read: ToInstance ToSubClass , 
	Decription("The Company property is an authenticated attribute stored in drivers' cat file which represents "
	"Company name that requested driver set be signed"): ToSubClass ]		
		String		Company;
	
	[read: ToInstance ToSubClass , 
	Decription("The SupURL property is an authenticated attribute stored in drivers' cat file which represents"
	"Support URL for company that requested driver set be signed"): ToSubClass ]		
		String		SupURL;

	[read: ToInstance ToSubClass , 
	Decription("The SupPhone property is an authenticated attribute stored in drivers' cat file which represents The Support phone no."): ToSubClass ]		
		String		SupPhone;
	
	[read: ToInstance ToSubClass , 
	Decription("The PilotProg property is an authenticated attribute stored in drivers' cat file which represents"
	"Audit trail for drivers signed during Pilot Program"): ToSubClass ]		
		String		PilotProg;
	
	[read: ToInstance ToSubClass , 
	Decription("The Cave property is an authenticated attribute stored in drivers' cat file which represents"
	"Audit trail if we have to sign driver sets without reviewing test log files"): ToSubClass ]		
		String		Cave;	
};	

[provider("WhqlProvider"): ToInstance ToSubClass, dynamic: ToInstance ToSubClass , 
Decription("Win32_PnPSignedDriverCIMDataFile is an association class basically used to get all the binary "
"files associated with the driver"): ToSubClass ]
class Win32_PnPSignedDriverCIMDataFile
{
	[read: ToInstance ToSubClass, key , 
	Decription("The PnPID propety is the PnPID of the device represented by Win32_PnPSignedDriver class instance"): ToSubClass ]
		String	PnPID;
	//[read: ToInstance ToSubClass, key]String	FileName;

	[read: ToInstance ToSubClass, key , 
	Decription("The Antecedent propety is a reference to Win32_PnPSignedDriver	instance "): ToSubClass ]
		Win32_PnPSignedDriver	ref Antecedent;

	[read: ToInstance ToSubClass, key , 
	Decription("The Dependent property is a reference to CIM_DataFile which represents "
	"the binary file associated with the PnP driver "): ToSubClass ]
		CIM_DataFile			ref Dependent;	
};

[provider("WhqlProvider"): ToInstance ToSubClass, dynamic: ToInstance ToSubClass , 
Decription("Win32_PnPSignedDriverCIMDataFile is an association class basically used to get all the binary "
"files associated with the driver"): ToSubClass ]
class Win32_PnPSignedDriverWin32PnPEntity
{
	[read: ToInstance ToSubClass, key , 
	Decription("The Dependent property is a reference Win32_PnPSignedDriver"): ToSubClass ]
		Win32_PnPSignedDriver	ref Antecedent;	
	
	[read: ToInstance ToSubClass, key , 
	Decription("The Antecedent property is a reference to Win32_PnPSignedDriver	instance "): ToSubClass ]
		Win32_PnEntity			ref Dependent;	
};