You Receive an "Invalid Class" Error Message When You Use a WDM Method


In Windows Server 2003, when you run a Windows Driver Model (WDM) method, you may receive an "Invalid Class" (WBEM_E_INVALID_CLASS) error message from Windows Management Instrumentation (WMI).


This problem may occur if the method definition in the Managed Object Format (MOF) file contains an OUT parameter first, for example:
[WmiMethodId(2), Implemented] 
void SampleMethod2([OUT] uint32 Output1,
[IN] uint32 Input1,
[IN] uint32 Input2 );


Hotfix Information

A supported hotfix is available from Microsoft. However, this hotfix is intended to correct only the problem that is described in this article. Apply this hotfix only to systems that are experiencing this specific problem. This hotfix might receive additional testing. Therefore, if you are not severely affected by this problem, we recommend that you wait for the next software update that contains this hotfix.

If the hotfix is available for download, there is a "Hotfix download available" section at the top of this Knowledge Base article. If this section does not appear, contact Microsoft Customer Service and Support to obtain the hotfix.

Note If additional issues occur or if any troubleshooting is required, you might have to create a separate service request. The usual support costs will apply to additional support questions and issues that do not qualify for this specific hotfix. For a complete list of Microsoft Customer Service and Support telephone numbers or to create a separate service request, visit the following Microsoft Web site: Note The "Hotfix download available" form displays the languages for which the hotfix is available. If you do not see your language, it is because a hotfix is not available for that language.

File Information

The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.

Date Time Version Size File name
29-May-2003 08:24 5.2.3790.40 137,728 Wmiprov.dll
29-May-2003 08:24 5.2.3790.40 137,728 Wmisvc.dll


To work around this problem, change the order of the [IN] and [OUT] parameters. In the example described in the "Cause" section, change the parameters so that they use the following order:
[WmiMethodId(1), Implemented] 
void SampleMethod1([IN] uint32 Input1,
[IN] uint32 Input2,
[OUT] uint32 Output1);
Note This workaround does not work in Microsoft Windows 2000. In Windows 2000, a problem exists when more than one [IN] parameter is used. If you are using Windows 2000, define the method with the [OUT] parameter first to work around this problem.


Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

More Information

For more information about WMI, visit the following Microsoft Web site:For more information about WDM, visit the following Microsoft Web site:

ID do Artigo: 819064 - Última Revisão: 28 de mai de 2008 - Revisão: 1