Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV
Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


[Kernel Driver] How to get the PDEVICE_OBJECT from another driver with just the GUID_INTERFACE_XXX

_Lost_bit__Lost_bit_ Member Posts: 13

Hi,

It looks like in User Space, if you have the GUID, you can use the CM_Get_Device_Interface_List_SizeA to get it. Seems that SetupDiGetClassDevs also works, but neither of those are available on Kernel Driver. My only option seems to be using IoRegisterPlugPlayNotification, and wait for the notification. This works, I am actually using it but the key problem is that it's only for PnP drivers, if the driver is not PnP, then how I can get it?

Thanks

Comments

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,498

    Kernel drivers aren't supposed to be doing that sort of thing.

    However, to address your question, only PnP drivers can register device interfaces.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • Doron_HolanDoron_Holan Member - All Emails Posts: 10,503

    Only pnp drivers can register device interfaces, any driver can query for them. A non pnp driver can call IoRegisterPlugPlayNotification (and IoGetDeviceInterfaces) to query the currently enabled interfaces and be notified of arrivals. Once you have the interface string, you can open a file object against it and query for the PDO (query device relations, TargetDeviceRelation ). If you send the query relations, make sure to release the Ob reference on the returned PDO as that is a part of the QDR contract.

    d
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Kernel Debugging 30 Mar 2020 OSR Seminar Space
Developing Minifilters 15 Jun 2020 LIVE ONLINE
Writing WDF Drivers 22 June 2020 LIVE ONLINE
Internals & Software Drivers 28 Sept 2020 Dulles, VA