@@ -335,6 +335,8 @@ pub enum ApiSubset {
335335 Storage ,
336336 /// API subset for USB (Universal Serial Bus) drivers: <https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/_usbref/>
337337 Usb ,
338+ /// API subset for network drivers: <https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/_netvista/>
339+ Network ,
338340}
339341
340342#[ derive( Debug , Error , PartialEq , Eq ) ]
@@ -687,21 +689,25 @@ impl Config {
687689 // ]
688690 // .into_iter()
689691 // .map(|(key, value)| (key.to_string(), value.map(|v| v.to_string())))
692+ let mut defs = vec ! [ ( "NDIS_SUPPORT_NDIS6" , None ) ] ;
693+
690694 match self . cpu_architecture {
691695 // Definitions sourced from `Program Files\Windows
692696 // Kits\10\build\10.0.22621.0\WindowsDriver.x64.props`
693697 CpuArchitecture :: Amd64 => {
694- vec ! [ ( "_WIN64" , None ) , ( "_AMD64_" , None ) , ( "AMD64" , None ) ]
698+ defs. extend ( [ ( "_WIN64" , None ) , ( "_AMD64_" , None ) , ( "AMD64" , None ) ] ) ;
699+ defs
695700 }
696701 // Definitions sourced from `Program Files\Windows
697702 // Kits\10\build\10.0.22621.0\WindowsDriver.arm64.props`
698703 CpuArchitecture :: Arm64 => {
699- vec ! [
704+ defs . extend ( [
700705 ( "_ARM64_" , None ) ,
701706 ( "ARM64" , None ) ,
702707 ( "_USE_DECLSPECS_FOR_SAL" , Some ( 1 ) ) ,
703708 ( "STD_CALL" , None ) ,
704- ]
709+ ] ) ;
710+ defs
705711 }
706712 }
707713 . into_iter ( )
@@ -816,6 +822,7 @@ impl Config {
816822 ApiSubset :: Wdf => self . wdf_headers ( ) ,
817823 ApiSubset :: Gpio => self . gpio_headers ( ) ,
818824 ApiSubset :: Hid => self . hid_headers ( ) ,
825+ ApiSubset :: Network => self . network_headers ( ) ,
819826 ApiSubset :: ParallelPorts => self . parallel_ports_headers ( ) ,
820827 ApiSubset :: Spb => self . spb_headers ( ) ,
821828 ApiSubset :: Storage => self . storage_headers ( ) ,
@@ -994,6 +1001,11 @@ impl Config {
9941001 Ok ( headers)
9951002 }
9961003
1004+ #[ tracing:: instrument( level = "trace" ) ]
1005+ fn network_headers ( & self ) -> Vec < & ' static str > {
1006+ vec ! [ "ndis.h" , "Fwpmk.h" , "Fwpsk.h" ]
1007+ }
1008+
9971009 /// Determines whether to include the ufxclient.h header based on the Clang
9981010 /// version used by bindgen.
9991011 ///
@@ -1167,6 +1179,8 @@ impl Config {
11671179 println ! ( "cargo::rustc-link-lib=static=wmilib" ) ;
11681180 println ! ( "cargo::rustc-link-lib=static=WdfLdr" ) ;
11691181 println ! ( "cargo::rustc-link-lib=static=WdfDriverEntry" ) ;
1182+ println ! ( "cargo::rustc-link-lib=static=Fwpkclnt" ) ;
1183+ println ! ( "cargo::rustc-link-lib=static=netio" ) ;
11701184
11711185 // Emit ARM64-specific libraries to link to derived from
11721186 // WindowsDriver.arm64.props
0 commit comments