I am Having Problems Componentizing My Third-Party Audio Driver
Submitted by: Andy Allred, Microsoft
A common complaint from Windows XP Embedded developers is regarding issues with componentizing third-party audio drivers that are not supplied in the default dependency database. Componentizing audio drivers can be a little different than componentizing most other drivers. This is because your audio driver's associated INF probably has "needs" or "include" dependencies. This means Component Designer needs access not only to your device's INF but also needs access to the INFs referenced within it. Note that this is also true with some of the multimedia devices like TV Tuners, etc…
When importing your third party audio INF, do you receive warnings similar to these from Component Designer's import process?
- Error: D:\test\GxWDMAXP.inf: [WDM_NSC.NTx86] Cannot find included INF File: "D:\test\ks.inf".
- Error: D:\test\GxWDMAXP.inf: [WDM_NSC.NTx86] Cannot find included INF File: "D:\test\wdmaudio.inf".
If you see these errors, then you will probably find the resulting component results in no audio functionality in your runtime and/or it generates PnP errors during FBA. The warnings listed above can easily be resolved by placing a copy of the "missing" INFs in the same folder as your third party audio INF.
Now import your audio INF again while it's in the same folder as ks.inf and wdmaudio.inf; you should see that many more component dependencies and registry keys will have been added to the resulting audio component. You can copy those two INFs from the repository of your Embedded Development machine.
In fact, when properly componentized, the third party WDM compatible audio INF you are working on should have the following additional dependencies now as a result of adding ks.inf and wdmaudio.inf:
- Approximately 435 reg key resources
- Prototype should be "Device: Media"
- Component dependencies on at least all of the following multimedia components:
- Kernel Streaming User Mode Support
- Primitive: Drmk.sys
- Primitive: ks.inf
- Primitive: Ks.sys
- Primitive: Portcls.sys
- Primitive: Stream.sys
- Primitive: Wdmaud.drv
If you need examples of the resources, go check any other WDM compatible audio device driver in Target Designer. You'll see the same dependencies (except for their unique file/reg resources).
Besides the INF Importer errors mentioned earlier, there is another classic symptom of this issue from the FBA log located in your runtime at .\windows\fba\fbalog.txt. The error is due to missing component dependencies that would be added when ks.inf and wdmaudio.inf are picked up by Component Designer. Check your FBA log for an error during PnP similar to the following sample log entry:
1:28:19 AM - [PnpEnumThread: InstallDevice] SetupDiCallClassInstaller Error: 0x715 Device: C-Media CM8738 Audio
Here are the most common errors seen in the import log when importing your third party INF:
- Error: After importing your audio driver: "[DelFiles] needs to be processed by the user."
Explanation: We will not process the DelFiles section of the INF because this would have the undesirable effect of deleting your drivers during FBA. You can safely ignore this warning.
- Error: "Cannot find included INF File: ....ks.inf"." and "Cannot find included INF File: .wdmaudio.inf"."
Explanation: The audio INF you are trying to componentize has an "Include" reference to the INFs listed above ks.inf and wdmaudio.inf. The import process was not able to locate these files. The fix for this is described earlier in the document.
- Error: Your embedded device's FBA Log reports an Audio driver error similar to this one:
1:28:19 AM - [PnpEnumThread: InstallDevice] SetupDiCallClassInstaller
Error: 0x715 Device: C-Media CM8738 Audio
Explanation: This is the same issue as Error#2 above, but is seen within the runtime if you ignore the errors from importing the audio inf.
If your errors are related to "file not found" issues or not able to import your repository or some other general componentization problem, please review the following tip articles:
These tips are for informational purposes and are provided only as a convenience. The entire risk of use or results in connection with the use of these tips remains with the user.