microsoft / wdkmetadata

Tooling to generate metadata for Win32 APIs in the Windows Driver Kit (WDK).
Other
92 stars 6 forks source link

Support Ndis.h #50

Closed DropDemBits closed 1 year ago

DropDemBits commented 1 year ago

Currently trying to follow the ndisprot_kmdf example in my ndisprot-rs project, and ndis.h is particularly annoying to generate bindings for due to depending on msvc-specific behaviour (see the code for the workaround I do), so it'd be nice for wdkmetadata to support it instead. :grinning:

I technically generate bindings for NDIS 6.82, but am technically registering as an NDIS 6.0 protocol driver so generating metadata for the latest NDIS version would be fine with me.

Thanks!

mikebattista commented 1 year ago

I made a first attempt at this. Ran into the below issue which I worked around in the checked in headers.

https://github.com/microsoft/Windows-driver-samples/issues/665

There are a bunch of "ndis" headers other than just ndis.h so you'll have to tell me if I got the full closure of what's needed.

We don't support wdf/umdf/kmdf headers right now in the metadata so let me know if you were expecting anything from there as well.

DropDemBits commented 1 year ago

Apparently NdisRegisterProtocolDriver or PNDIS_BIND_PARAMETERS (which are both gated behind NDIS_SUPPORT_NDIS6) aren't showing up in the metadata, which seems to be caused by the defines made in ndis/version.h not being visible inside of ndis.h.

There are a bunch of "ndis" headers other than just ndis.h so you'll have to tell me if I got the full closure of what's needed.

It seems like the only header that's missing is netpnp.h, though once NET_PNP_EVENT_NOTIFICATION (gated behind NDIS_SUPPORT_NDIS6) is scraped it'd be needed anyways.

mikebattista commented 1 year ago

Thanks I created a separate issue for these.