Tim, thanks for the reply.
> Do you actually have a KMDF driver?
> Sysvad is a WDM driver, not KMDF.
I /thought/ it was KMDF. My current driver is based on the latest SysVAD, and SysVAD contains lots of WdfXxxxx() function calls and use of structs and macros that begin with "WDF_". The original comments even mention "Framework", e.g.:
// Set WdfDriverInitNoDispatchOverride flag to tell the framework
// not to provide dispatch routines for the driver. In other words,
// the framework must not intercept IRPs that the I/O manager has
// directed to the driver. In this case, they will be handled by Audio
// port driver.
config.DriverInitFlags |= WdfDriverInitNoDispatchOverride;
> Assuming you are not a KMDF driver,
> you use IoRegisterDeviceInterface and IoSetDeviceInterfaceState.
It looks like a WDM driver can't create a Symbolic Link, or at least is doesn't let me name it. *IoRegisterDeviceInterface* /returns/ a symbolic link, which kind of surprised me. I looked at *IoCreateSymbolicLink*, but remarks in the docs say:
/WDM drivers *do not name device objects and therefore should not
use this routine*. Instead, a WDM driver should call
set up a symbolic link./
I'm really confused.