locked
How/when is device metadata loaded?

    Question

  • I am trying to access a custom driver for a non-removable device from a Windows Store App, but it appears that the device metadata is not being loaded during/after driver install thus causing a driver access failure because the privileged list is empty.

    At what point of the install process does Windows associate device metadata with a driver?  

    Does Windows automatically associate device metadata with a driver or is there something else that I have to do during driver install?

    Am I having problems because device metadata on non-removable system devices is not supported?

    Reasons why I think the device metadata is not being loaded:

    1.) Used device metadata authoring wizard to create new device metadata.  Make sure Hardware Ids match those in Device Manager for the device.

    2.) Check the "Copy to local store" box

    3.) Confirm via timestamp that the metadata is indeed copied to %PROGRAMDATA%\Microsoft\Windows\DeviceMedadataStore\

    4.) Reboot

    5.) Install driver successfully

    6.) Reboot

    7.) Check %PROGRAMDATA%\Microsoft\Windows\DeviceMetadataCache for my device's metadata; can't find it

    8.) Run App. Gets a handle to the device okay but does not show a privileged app list

    DeviceAccess	DeviceBroker: Opening handle for instance path \\?\ACPI#XXX3400#2&daba3ff&1#{0043cbde-43a1-481a-a5a7-30e23f38321e}
    DeviceAccess	DeviceInterfaceAccessCheck:  Entering for class GUID {0043CBDE-43A1-481A-A5A7-30E23F38321E}.
    DeviceAccess	DeviceInterfaceAccessCheck: Device interface path \\?\ACPI#XXX3400#2&daba3ff&1#{0043cbde-43a1-481a-a5a7-30e23f38321e} is restricted.
    DeviceAccess	DeviceInterfaceAccessCheck: Opening restricted interface; checking for AppID match.
    DeviceAccess	DeviceInterfaceAccessCheck: Checking for package "abcd.efgh.ijkl_gyer1wweeafyy" in privileged list for path \\?\ACPI#XXX3400#2&daba3ff&1#{0043cbde-43a1-481a-a5a7-30e23f38321e}.
    DeviceAccess	DeviceInterfaceAccessCheck: Container for path \\?\ACPI#XXX3400#2&daba3ff&1#{0043cbde-43a1-481a-a5a7-30e23f38321e} is {00000000-0000-0000-FFFF-FFFFFFFFFFFF}.
    DeviceAccess	DeviceBroker: Failed access check with hr 80070005.
    DeviceAccess	DeviceBroker: Exiting OpenDeviceFromInterfacePath with hr 80070005.


    Wednesday, October 24, 2012 6:15 PM

All replies

  • How do you do step 5?  The metadata gets associated usally as part of PnP install - when the device is installed it will check the store and possibly go out to the WMIS server (if get enhanced icons is enabled).  windows\inf\setupapi.dev.log may give some insight on how the device was installed.  I think that's right - it should then copy it to the cache if it finds metadata.  Another possible problem though with the full scenario though is that it still may not allow the app access if it's unsigned.  "bcdedit -set testsigning on" then a reboot to get around that.
    Thursday, October 25, 2012 4:43 PM
  • Thanks for the response Payne.

    Test signing is enabled.

    Step 5 (installing the driver) was done by using a generic installer.  I looked at setupapi.dev.log and the driver was successfully installed, but it didn't say anything about device metadata.

    I think the reason the device metadata is not getting loaded is that my device is not removable and doesn't show up in Devices and Printers.  From http://msdn.microsoft.com/en-us/library/windows/hardware/ff686702(v=vs.85).aspx:

    When the Devices and Printers or Device Stage user interfaces are opened, the operating system starts the device metadata retrieval client (DMRC) to search its cache for the most appropriate and current metadata package for a device. 

    It appears that device metadata is not supported for non-removable system devices, can anyone confirm this?

    Thursday, October 25, 2012 5:39 PM
  • hi,I met the same problem with you.Have you resolved this issue?if so,can you contact me? my mail address:huan.tu@intel.com.

    Tu,Huan

    Tuesday, December 11, 2012 4:04 AM