Skip to content

Commit a8cf611

Browse files
authored
Add support for reserved parameters (#2039)
1 parent 5ecc633 commit a8cf611

File tree

42 files changed

+654
-596
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+654
-596
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ jobs:
173173
cargo clippy -p test_not_dll &&
174174
cargo clippy -p test_properties &&
175175
cargo clippy -p test_query_signature &&
176+
cargo clippy -p test_reserved &&
176177
cargo clippy -p test_resources &&
177178
cargo clippy -p test_return_struct &&
178179
cargo clippy -p test_string_param &&

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ jobs:
157157
cargo test --target ${{ matrix.target }} -p test_not_dll &&
158158
cargo test --target ${{ matrix.target }} -p test_properties &&
159159
cargo test --target ${{ matrix.target }} -p test_query_signature &&
160+
cargo test --target ${{ matrix.target }} -p test_reserved &&
160161
cargo test --target ${{ matrix.target }} -p test_resources &&
161162
cargo test --target ${{ matrix.target }} -p test_return_struct &&
162163
cargo test --target ${{ matrix.target }} -p test_string_param &&

crates/libs/bindgen/src/gen.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ impl<'a> Gen<'a> {
911911
} else {
912912
quote! { ::core::mem::transmute_copy(#name), }
913913
}
914-
} else if param.ty.is_pointer() && self.reader.param_flags(param.def).optional() {
914+
} else if param.ty.is_pointer() && (self.reader.param_flags(param.def).optional() || self.reader.param_is_reserved(param.def)) {
915915
let flags = self.reader.param_flags(param.def);
916916
if flags.output() {
917917
quote! { ::core::mem::transmute(#name.unwrap_or(::std::ptr::null_mut())), }
@@ -1006,7 +1006,7 @@ impl<'a> Gen<'a> {
10061006

10071007
let kind = self.type_default_name(&param.ty);
10081008

1009-
if param.ty.is_pointer() && self.reader.param_flags(param.def).optional() {
1009+
if param.ty.is_pointer() && (self.reader.param_flags(param.def).optional() || self.reader.param_is_reserved(param.def)) {
10101010
tokens.combine(&quote! { #name: ::core::option::Option<#kind>, });
10111011
} else if self.reader.type_is_blittable(&param.ty) {
10121012
tokens.combine(&quote! { #name: #kind, });

crates/libs/metadata/src/reader/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,9 @@ impl<'a> Reader<'a> {
714714
pub fn param_is_retval(&self, row: Param) -> bool {
715715
self.param_attributes(row).any(|attribute| self.attribute_name(attribute) == "RetValAttribute")
716716
}
717+
pub fn param_is_reserved(&self, row: Param) -> bool {
718+
self.param_attributes(row).any(|attribute| self.attribute_name(attribute) == "ReservedAttribute")
719+
}
717720
pub fn param_free_with(&self, row: Param) -> Option<String> {
718721
for attribute in self.param_attributes(row) {
719722
if self.attribute_name(attribute) == "FreeWithAttribute" {

crates/libs/windows/src/Windows/Win32/Devices/DeviceAndDriverInstallation/mod.rs

Lines changed: 142 additions & 124 deletions
Large diffs are not rendered by default.

crates/libs/windows/src/Windows/Win32/Globalization/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9877,7 +9877,7 @@ pub unsafe fn CompareStringA(locale: u32, dwcmpflags: u32, lpstring1: &[i8], lps
98779877
#[doc = "*Required features: `\"Win32_Globalization\"`, `\"Win32_Foundation\"`*"]
98789878
#[cfg(feature = "Win32_Foundation")]
98799879
#[inline]
9880-
pub unsafe fn CompareStringEx<'a, P0, P1>(lplocalename: P0, dwcmpflags: COMPARE_STRING_FLAGS, lpstring1: &[u16], lpstring2: &[u16], lpversioninformation: *mut NLSVERSIONINFO, lpreserved: *mut ::core::ffi::c_void, lparam: P1) -> i32
9880+
pub unsafe fn CompareStringEx<'a, P0, P1>(lplocalename: P0, dwcmpflags: COMPARE_STRING_FLAGS, lpstring1: &[u16], lpstring2: &[u16], lpversioninformation: ::core::option::Option<*mut NLSVERSIONINFO>, lpreserved: ::core::option::Option<*mut ::core::ffi::c_void>, lparam: P1) -> i32
98819881
where
98829882
P0: ::std::convert::Into<::windows::core::PCWSTR>,
98839883
P1: ::std::convert::Into<super::Foundation::LPARAM>,
@@ -9886,7 +9886,7 @@ where
98869886
extern "system" {
98879887
fn CompareStringEx(lplocalename: ::windows::core::PCWSTR, dwcmpflags: COMPARE_STRING_FLAGS, lpstring1: ::windows::core::PCWSTR, cchcount1: i32, lpstring2: ::windows::core::PCWSTR, cchcount2: i32, lpversioninformation: *mut NLSVERSIONINFO, lpreserved: *mut ::core::ffi::c_void, lparam: super::Foundation::LPARAM) -> i32;
98889888
}
9889-
CompareStringEx(lplocalename.into(), dwcmpflags, ::core::mem::transmute(lpstring1.as_ptr()), lpstring1.len() as _, ::core::mem::transmute(lpstring2.as_ptr()), lpstring2.len() as _, ::core::mem::transmute(lpversioninformation), ::core::mem::transmute(lpreserved), lparam.into())
9889+
CompareStringEx(lplocalename.into(), dwcmpflags, ::core::mem::transmute(lpstring1.as_ptr()), lpstring1.len() as _, ::core::mem::transmute(lpstring2.as_ptr()), lpstring2.len() as _, ::core::mem::transmute(lpversioninformation.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(lpreserved.unwrap_or(::std::ptr::null_mut())), lparam.into())
98909890
}
98919891
#[doc = "*Required features: `\"Win32_Globalization\"`, `\"Win32_Foundation\"`*"]
98929892
#[cfg(feature = "Win32_Foundation")]
@@ -12851,8 +12851,8 @@ impl IMLangStringAStr {
1285112851
{
1285212852
(::windows::core::Interface::vtable(self).SetStrBufA)(::windows::core::Interface::as_raw(self), ldestpos, ldestlen, ucodepage, psrcbuf.into().abi(), ::core::mem::transmute(pcchactual.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(plactuallen.unwrap_or(::std::ptr::null_mut()))).ok()
1285312853
}
12854-
pub unsafe fn GetAStr(&self, lsrcpos: i32, lsrclen: i32, ucodepagein: u32, pucodepageout: *mut u32, pszdest: ::core::option::Option<&mut [u8]>, pcchactual: ::core::option::Option<*mut i32>, plactuallen: ::core::option::Option<*mut i32>) -> ::windows::core::Result<()> {
12855-
(::windows::core::Interface::vtable(self).GetAStr)(::windows::core::Interface::as_raw(self), lsrcpos, lsrclen, ucodepagein, ::core::mem::transmute(pucodepageout), ::core::mem::transmute(pszdest.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), pszdest.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pcchactual.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(plactuallen.unwrap_or(::std::ptr::null_mut()))).ok()
12854+
pub unsafe fn GetAStr(&self, lsrcpos: i32, lsrclen: i32, ucodepagein: u32, pucodepageout: ::core::option::Option<*mut u32>, pszdest: ::core::option::Option<&mut [u8]>, pcchactual: ::core::option::Option<*mut i32>, plactuallen: ::core::option::Option<*mut i32>) -> ::windows::core::Result<()> {
12855+
(::windows::core::Interface::vtable(self).GetAStr)(::windows::core::Interface::as_raw(self), lsrcpos, lsrclen, ucodepagein, ::core::mem::transmute(pucodepageout.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(pszdest.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), pszdest.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(pcchactual.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(plactuallen.unwrap_or(::std::ptr::null_mut()))).ok()
1285612856
}
1285712857
pub unsafe fn GetStrBufA(&self, lsrcpos: i32, lsrcmaxlen: i32, pudestcodepage: ::core::option::Option<*mut u32>, ppdestbuf: *mut ::core::option::Option<IMLangStringBufA>, pldestlen: ::core::option::Option<*mut i32>) -> ::windows::core::Result<()> {
1285812858
(::windows::core::Interface::vtable(self).GetStrBufA)(::windows::core::Interface::as_raw(self), lsrcpos, lsrcmaxlen, ::core::mem::transmute(pudestcodepage.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(ppdestbuf), ::core::mem::transmute(pldestlen.unwrap_or(::std::ptr::null_mut()))).ok()

crates/libs/windows/src/Windows/Win32/Graphics/Gdi/mod.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ where
5050
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
5151
#[cfg(feature = "Win32_Foundation")]
5252
#[inline]
53-
pub unsafe fn AddFontMemResourceEx(pfileview: &[u8], pvresrved: *mut ::core::ffi::c_void, pnumfonts: *const u32) -> super::super::Foundation::HANDLE {
53+
pub unsafe fn AddFontMemResourceEx(pfileview: &[u8], pvresrved: ::core::option::Option<*mut ::core::ffi::c_void>, pnumfonts: *const u32) -> super::super::Foundation::HANDLE {
5454
#[cfg_attr(windows, link(name = "windows"))]
5555
extern "system" {
5656
fn AddFontMemResourceEx(pfileview: *const ::core::ffi::c_void, cjsize: u32, pvresrved: *mut ::core::ffi::c_void, pnumfonts: *const u32) -> super::super::Foundation::HANDLE;
5757
}
58-
AddFontMemResourceEx(::core::mem::transmute(pfileview.as_ptr()), pfileview.len() as _, ::core::mem::transmute(pvresrved), ::core::mem::transmute(pnumfonts))
58+
AddFontMemResourceEx(::core::mem::transmute(pfileview.as_ptr()), pfileview.len() as _, ::core::mem::transmute(pvresrved.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(pnumfonts))
5959
}
6060
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
6161
#[inline]
@@ -71,27 +71,27 @@ where
7171
}
7272
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
7373
#[inline]
74-
pub unsafe fn AddFontResourceExA<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32
74+
pub unsafe fn AddFontResourceExA<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: ::core::option::Option<*mut ::core::ffi::c_void>) -> i32
7575
where
7676
P0: ::std::convert::Into<::windows::core::PCSTR>,
7777
{
7878
#[cfg_attr(windows, link(name = "windows"))]
7979
extern "system" {
8080
fn AddFontResourceExA(name: ::windows::core::PCSTR, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32;
8181
}
82-
AddFontResourceExA(name.into(), fl, ::core::mem::transmute(res))
82+
AddFontResourceExA(name.into(), fl, ::core::mem::transmute(res.unwrap_or(::std::ptr::null_mut())))
8383
}
8484
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
8585
#[inline]
86-
pub unsafe fn AddFontResourceExW<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32
86+
pub unsafe fn AddFontResourceExW<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: ::core::option::Option<*mut ::core::ffi::c_void>) -> i32
8787
where
8888
P0: ::std::convert::Into<::windows::core::PCWSTR>,
8989
{
9090
#[cfg_attr(windows, link(name = "windows"))]
9191
extern "system" {
9292
fn AddFontResourceExW(name: ::windows::core::PCWSTR, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32;
9393
}
94-
AddFontResourceExW(name.into(), fl, ::core::mem::transmute(res))
94+
AddFontResourceExW(name.into(), fl, ::core::mem::transmute(res.unwrap_or(::std::ptr::null_mut())))
9595
}
9696
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
9797
#[inline]
@@ -3857,28 +3857,28 @@ where
38573857
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
38583858
#[cfg(feature = "Win32_Foundation")]
38593859
#[inline]
3860-
pub unsafe fn RemoveFontResourceExA<'a, P0>(name: P0, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL
3860+
pub unsafe fn RemoveFontResourceExA<'a, P0>(name: P0, fl: u32, pdv: ::core::option::Option<*mut ::core::ffi::c_void>) -> super::super::Foundation::BOOL
38613861
where
38623862
P0: ::std::convert::Into<::windows::core::PCSTR>,
38633863
{
38643864
#[cfg_attr(windows, link(name = "windows"))]
38653865
extern "system" {
38663866
fn RemoveFontResourceExA(name: ::windows::core::PCSTR, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL;
38673867
}
3868-
RemoveFontResourceExA(name.into(), fl, ::core::mem::transmute(pdv))
3868+
RemoveFontResourceExA(name.into(), fl, ::core::mem::transmute(pdv.unwrap_or(::std::ptr::null_mut())))
38693869
}
38703870
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
38713871
#[cfg(feature = "Win32_Foundation")]
38723872
#[inline]
3873-
pub unsafe fn RemoveFontResourceExW<'a, P0>(name: P0, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL
3873+
pub unsafe fn RemoveFontResourceExW<'a, P0>(name: P0, fl: u32, pdv: ::core::option::Option<*mut ::core::ffi::c_void>) -> super::super::Foundation::BOOL
38743874
where
38753875
P0: ::std::convert::Into<::windows::core::PCWSTR>,
38763876
{
38773877
#[cfg_attr(windows, link(name = "windows"))]
38783878
extern "system" {
38793879
fn RemoveFontResourceExW(name: ::windows::core::PCWSTR, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL;
38803880
}
3881-
RemoveFontResourceExW(name.into(), fl, ::core::mem::transmute(pdv))
3881+
RemoveFontResourceExW(name.into(), fl, ::core::mem::transmute(pdv.unwrap_or(::std::ptr::null_mut())))
38823882
}
38833883
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
38843884
#[cfg(feature = "Win32_Foundation")]

crates/libs/windows/src/Windows/Win32/Media/Audio/XAudio2/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -307,8 +307,8 @@ impl IXAudio2 {
307307
}
308308
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
309309
#[cfg(feature = "Win32_Foundation")]
310-
pub unsafe fn SetDebugConfiguration(&self, pdebugconfiguration: ::core::option::Option<*const XAUDIO2_DEBUG_CONFIGURATION>, preserved: *mut ::core::ffi::c_void) {
311-
(::windows::core::Interface::vtable(self).SetDebugConfiguration)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pdebugconfiguration.unwrap_or(::std::ptr::null())), ::core::mem::transmute(preserved))
310+
pub unsafe fn SetDebugConfiguration(&self, pdebugconfiguration: ::core::option::Option<*const XAUDIO2_DEBUG_CONFIGURATION>, preserved: ::core::option::Option<*mut ::core::ffi::c_void>) {
311+
(::windows::core::Interface::vtable(self).SetDebugConfiguration)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pdebugconfiguration.unwrap_or(::std::ptr::null())), ::core::mem::transmute(preserved.unwrap_or(::std::ptr::null_mut())))
312312
}
313313
}
314314
impl ::core::convert::From<IXAudio2> for ::windows::core::IUnknown {

crates/libs/windows/src/Windows/Win32/Media/DirectShow/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4182,8 +4182,8 @@ pub struct IAMRebuild_Vtbl {
41824182
#[repr(transparent)]
41834183
pub struct IAMResourceControl(::windows::core::IUnknown);
41844184
impl IAMResourceControl {
4185-
pub unsafe fn Reserve(&self, dwflags: u32, pvreserved: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
4186-
(::windows::core::Interface::vtable(self).Reserve)(::windows::core::Interface::as_raw(self), dwflags, ::core::mem::transmute(pvreserved)).ok()
4185+
pub unsafe fn Reserve(&self, dwflags: u32, pvreserved: ::core::option::Option<*mut ::core::ffi::c_void>) -> ::windows::core::Result<()> {
4186+
(::windows::core::Interface::vtable(self).Reserve)(::windows::core::Interface::as_raw(self), dwflags, ::core::mem::transmute(pvreserved.unwrap_or(::std::ptr::null_mut()))).ok()
41874187
}
41884188
}
41894189
impl ::core::convert::From<IAMResourceControl> for ::windows::core::IUnknown {
@@ -28602,11 +28602,11 @@ impl IFilterGraph2 {
2860228602
{
2860328603
(::windows::core::Interface::vtable(self).ReconnectEx)(::windows::core::Interface::as_raw(self), ppin.into().abi(), ::core::mem::transmute(pmt.unwrap_or(::std::ptr::null()))).ok()
2860428604
}
28605-
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::Result<()>
28605+
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
2860628606
where
2860728607
P0: ::std::convert::Into<::windows::core::InParam<'a, IPin>>,
2860828608
{
28609-
(::windows::core::Interface::vtable(self).RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext)).ok()
28609+
(::windows::core::Interface::vtable(self).RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext.unwrap_or(::std::ptr::null_mut()))).ok()
2861028610
}
2861128611
}
2861228612
impl ::core::convert::From<IFilterGraph2> for ::windows::core::IUnknown {
@@ -28804,11 +28804,11 @@ impl IFilterGraph3 {
2880428804
{
2880528805
(::windows::core::Interface::vtable(self).base__.ReconnectEx)(::windows::core::Interface::as_raw(self), ppin.into().abi(), ::core::mem::transmute(pmt.unwrap_or(::std::ptr::null()))).ok()
2880628806
}
28807-
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::Result<()>
28807+
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
2880828808
where
2880928809
P0: ::std::convert::Into<::windows::core::InParam<'a, IPin>>,
2881028810
{
28811-
(::windows::core::Interface::vtable(self).base__.RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext)).ok()
28811+
(::windows::core::Interface::vtable(self).base__.RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext.unwrap_or(::std::ptr::null_mut()))).ok()
2881228812
}
2881328813
#[doc = "*Required features: `\"Win32_System_Com\"`*"]
2881428814
#[cfg(feature = "Win32_System_Com")]

crates/libs/windows/src/Windows/Win32/Media/MediaFoundation/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9147,8 +9147,8 @@ impl IDirectXVideoDecoderService {
91479147
}
91489148
#[doc = "*Required features: `\"Win32_Graphics_Direct3D9\"`*"]
91499149
#[cfg(feature = "Win32_Graphics_Direct3D9")]
9150-
pub unsafe fn GetDecoderConfigurations(&self, guid: *const ::windows::core::GUID, pvideodesc: *const DXVA2_VideoDesc, preserved: *mut ::core::ffi::c_void, pcount: *mut u32, ppconfigs: ::core::option::Option<*mut *mut DXVA2_ConfigPictureDecode>) -> ::windows::core::Result<()> {
9151-
(::windows::core::Interface::vtable(self).GetDecoderConfigurations)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(guid), ::core::mem::transmute(pvideodesc), ::core::mem::transmute(preserved), ::core::mem::transmute(pcount), ::core::mem::transmute(ppconfigs.unwrap_or(::std::ptr::null_mut()))).ok()
9150+
pub unsafe fn GetDecoderConfigurations(&self, guid: *const ::windows::core::GUID, pvideodesc: *const DXVA2_VideoDesc, preserved: ::core::option::Option<*mut ::core::ffi::c_void>, pcount: *mut u32, ppconfigs: ::core::option::Option<*mut *mut DXVA2_ConfigPictureDecode>) -> ::windows::core::Result<()> {
9151+
(::windows::core::Interface::vtable(self).GetDecoderConfigurations)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(guid), ::core::mem::transmute(pvideodesc), ::core::mem::transmute(preserved.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(pcount), ::core::mem::transmute(ppconfigs.unwrap_or(::std::ptr::null_mut()))).ok()
91529152
}
91539153
#[doc = "*Required features: `\"Win32_Graphics_Direct3D9\"`*"]
91549154
#[cfg(feature = "Win32_Graphics_Direct3D9")]
@@ -28919,11 +28919,11 @@ impl IMFSourceReader {
2891928919
let mut result__ = ::core::mem::MaybeUninit::zeroed();
2892028920
(::windows::core::Interface::vtable(self).GetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(result__.as_mut_ptr())).from_abi::<IMFMediaType>(result__)
2892128921
}
28922-
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: *mut u32, pmediatype: P0) -> ::windows::core::Result<()>
28922+
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: ::core::option::Option<*mut u32>, pmediatype: P0) -> ::windows::core::Result<()>
2892328923
where
2892428924
P0: ::std::convert::Into<::windows::core::InParam<'a, IMFMediaType>>,
2892528925
{
28926-
(::windows::core::Interface::vtable(self).SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved), pmediatype.into().abi()).ok()
28926+
(::windows::core::Interface::vtable(self).SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved.unwrap_or(::std::ptr::null_mut())), pmediatype.into().abi()).ok()
2892728927
}
2892828928
#[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com_StructuredStorage\"`*"]
2892928929
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]
@@ -29180,11 +29180,11 @@ impl IMFSourceReaderEx {
2918029180
let mut result__ = ::core::mem::MaybeUninit::zeroed();
2918129181
(::windows::core::Interface::vtable(self).base__.GetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(result__.as_mut_ptr())).from_abi::<IMFMediaType>(result__)
2918229182
}
29183-
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: *mut u32, pmediatype: P0) -> ::windows::core::Result<()>
29183+
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: ::core::option::Option<*mut u32>, pmediatype: P0) -> ::windows::core::Result<()>
2918429184
where
2918529185
P0: ::std::convert::Into<::windows::core::InParam<'a, IMFMediaType>>,
2918629186
{
29187-
(::windows::core::Interface::vtable(self).base__.SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved), pmediatype.into().abi()).ok()
29187+
(::windows::core::Interface::vtable(self).base__.SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved.unwrap_or(::std::ptr::null_mut())), pmediatype.into().abi()).ok()
2918829188
}
2918929189
#[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com_StructuredStorage\"`*"]
2919029190
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]

0 commit comments

Comments
 (0)