The Fake DDK has a few issues we are in the process of addressing:
Unfortunately, almost 200 packages depend on at least part of the fake_ddk, so in order to change it, we need to separate out dependencies. This roadmap describes what changes will be made at each stage, and how new packages can be written to avoid creating more transition work.
All packages which rely on fake_ddk simply for the C function definitions will be changed to depend on a new library, no_ddk. In addition, many packages include fake_ddk.h unnecessarily, and this dependency will be removed.
New packages should not depend on fake_ddk if they do not instantiate any of the fake_ddk objects, or call any fake_ddk functions. These packages should depend on no_ddk instead.
All packages which rely on fake_ddk just for the fidl-helper functionality will be moved to a seperate library, name: tdb. All usages of the fake_ddk which do not use the fake_ddk::Bind() function will be changed to depend on the new library.
New packages should not depend on fake_ddk if they do not call fake_ddk::Bind(). These packages should depend on no_ddk or the other fake library created in this stage instead.
Functionality will be added to the fake_ddk::Bind class, which should cover cases where other testing setups derive their own Bind class. Added functionality will be rolled into drivers that require this functionality.
Fake_ddk will be adapted to address some of its major issues, including lack of thread support, and launching multiple devices.
Fake DDK testing guidelines will be developed, and driver tests will be augmented to include fake_ddk tests, where appropriate. Drivers that depended on no_ddk will now be moved back to depend on fake_ddk, and implement the recommended tests.