Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for reserved parameters #2039

Merged
merged 6 commits into from Sep 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Expand Up @@ -173,6 +173,7 @@ jobs:
cargo clippy -p test_not_dll &&
cargo clippy -p test_properties &&
cargo clippy -p test_query_signature &&
cargo clippy -p test_reserved &&
cargo clippy -p test_resources &&
cargo clippy -p test_return_struct &&
cargo clippy -p test_string_param &&
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/test.yml
Expand Up @@ -157,6 +157,7 @@ jobs:
cargo test --target ${{ matrix.target }} -p test_not_dll &&
cargo test --target ${{ matrix.target }} -p test_properties &&
cargo test --target ${{ matrix.target }} -p test_query_signature &&
cargo test --target ${{ matrix.target }} -p test_reserved &&
cargo test --target ${{ matrix.target }} -p test_resources &&
cargo test --target ${{ matrix.target }} -p test_return_struct &&
cargo test --target ${{ matrix.target }} -p test_string_param &&
Expand Down
4 changes: 2 additions & 2 deletions crates/libs/bindgen/src/gen.rs
Expand Up @@ -911,7 +911,7 @@ impl<'a> Gen<'a> {
} else {
quote! { ::core::mem::transmute_copy(#name), }
}
} else if param.ty.is_pointer() && self.reader.param_flags(param.def).optional() {
} else if param.ty.is_pointer() && (self.reader.param_flags(param.def).optional() || self.reader.param_is_reserved(param.def)) {
let flags = self.reader.param_flags(param.def);
if flags.output() {
quote! { ::core::mem::transmute(#name.unwrap_or(::std::ptr::null_mut())), }
Expand Down Expand Up @@ -1006,7 +1006,7 @@ impl<'a> Gen<'a> {

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

if param.ty.is_pointer() && self.reader.param_flags(param.def).optional() {
if param.ty.is_pointer() && (self.reader.param_flags(param.def).optional() || self.reader.param_is_reserved(param.def)) {
tokens.combine(&quote! { #name: ::core::option::Option<#kind>, });
} else if self.reader.type_is_blittable(&param.ty) {
tokens.combine(&quote! { #name: #kind, });
Expand Down
3 changes: 3 additions & 0 deletions crates/libs/metadata/src/reader/mod.rs
Expand Up @@ -714,6 +714,9 @@ impl<'a> Reader<'a> {
pub fn param_is_retval(&self, row: Param) -> bool {
self.param_attributes(row).any(|attribute| self.attribute_name(attribute) == "RetValAttribute")
}
pub fn param_is_reserved(&self, row: Param) -> bool {
self.param_attributes(row).any(|attribute| self.attribute_name(attribute) == "ReservedAttribute")
}
pub fn param_free_with(&self, row: Param) -> Option<String> {
for attribute in self.param_attributes(row) {
if self.attribute_name(attribute) == "FreeWithAttribute" {
Expand Down

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions crates/libs/windows/src/Windows/Win32/Globalization/mod.rs
Expand Up @@ -9877,7 +9877,7 @@ pub unsafe fn CompareStringA(locale: u32, dwcmpflags: u32, lpstring1: &[i8], lps
#[doc = "*Required features: `\"Win32_Globalization\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
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
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
where
P0: ::std::convert::Into<::windows::core::PCWSTR>,
P1: ::std::convert::Into<super::Foundation::LPARAM>,
Expand All @@ -9886,7 +9886,7 @@ where
extern "system" {
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;
}
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())
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())
}
#[doc = "*Required features: `\"Win32_Globalization\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
Expand Down Expand Up @@ -12851,8 +12851,8 @@ impl IMLangStringAStr {
{
(::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()
}
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<()> {
(::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()
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<()> {
(::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()
}
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<()> {
(::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()
Expand Down
20 changes: 10 additions & 10 deletions crates/libs/windows/src/Windows/Win32/Graphics/Gdi/mod.rs
Expand Up @@ -50,12 +50,12 @@ where
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn AddFontMemResourceEx(pfileview: &[u8], pvresrved: *mut ::core::ffi::c_void, pnumfonts: *const u32) -> super::super::Foundation::HANDLE {
pub unsafe fn AddFontMemResourceEx(pfileview: &[u8], pvresrved: ::core::option::Option<*mut ::core::ffi::c_void>, pnumfonts: *const u32) -> super::super::Foundation::HANDLE {
#[cfg_attr(windows, link(name = "windows"))]
extern "system" {
fn AddFontMemResourceEx(pfileview: *const ::core::ffi::c_void, cjsize: u32, pvresrved: *mut ::core::ffi::c_void, pnumfonts: *const u32) -> super::super::Foundation::HANDLE;
}
AddFontMemResourceEx(::core::mem::transmute(pfileview.as_ptr()), pfileview.len() as _, ::core::mem::transmute(pvresrved), ::core::mem::transmute(pnumfonts))
AddFontMemResourceEx(::core::mem::transmute(pfileview.as_ptr()), pfileview.len() as _, ::core::mem::transmute(pvresrved.unwrap_or(::std::ptr::null_mut())), ::core::mem::transmute(pnumfonts))
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
#[inline]
Expand All @@ -71,27 +71,27 @@ where
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
#[inline]
pub unsafe fn AddFontResourceExA<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32
pub unsafe fn AddFontResourceExA<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: ::core::option::Option<*mut ::core::ffi::c_void>) -> i32
where
P0: ::std::convert::Into<::windows::core::PCSTR>,
{
#[cfg_attr(windows, link(name = "windows"))]
extern "system" {
fn AddFontResourceExA(name: ::windows::core::PCSTR, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32;
}
AddFontResourceExA(name.into(), fl, ::core::mem::transmute(res))
AddFontResourceExA(name.into(), fl, ::core::mem::transmute(res.unwrap_or(::std::ptr::null_mut())))
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
#[inline]
pub unsafe fn AddFontResourceExW<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32
pub unsafe fn AddFontResourceExW<'a, P0>(name: P0, fl: FONT_RESOURCE_CHARACTERISTICS, res: ::core::option::Option<*mut ::core::ffi::c_void>) -> i32
where
P0: ::std::convert::Into<::windows::core::PCWSTR>,
{
#[cfg_attr(windows, link(name = "windows"))]
extern "system" {
fn AddFontResourceExW(name: ::windows::core::PCWSTR, fl: FONT_RESOURCE_CHARACTERISTICS, res: *mut ::core::ffi::c_void) -> i32;
}
AddFontResourceExW(name.into(), fl, ::core::mem::transmute(res))
AddFontResourceExW(name.into(), fl, ::core::mem::transmute(res.unwrap_or(::std::ptr::null_mut())))
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`*"]
#[inline]
Expand Down Expand Up @@ -3857,28 +3857,28 @@ where
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn RemoveFontResourceExA<'a, P0>(name: P0, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL
pub unsafe fn RemoveFontResourceExA<'a, P0>(name: P0, fl: u32, pdv: ::core::option::Option<*mut ::core::ffi::c_void>) -> super::super::Foundation::BOOL
where
P0: ::std::convert::Into<::windows::core::PCSTR>,
{
#[cfg_attr(windows, link(name = "windows"))]
extern "system" {
fn RemoveFontResourceExA(name: ::windows::core::PCSTR, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL;
}
RemoveFontResourceExA(name.into(), fl, ::core::mem::transmute(pdv))
RemoveFontResourceExA(name.into(), fl, ::core::mem::transmute(pdv.unwrap_or(::std::ptr::null_mut())))
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
#[inline]
pub unsafe fn RemoveFontResourceExW<'a, P0>(name: P0, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL
pub unsafe fn RemoveFontResourceExW<'a, P0>(name: P0, fl: u32, pdv: ::core::option::Option<*mut ::core::ffi::c_void>) -> super::super::Foundation::BOOL
where
P0: ::std::convert::Into<::windows::core::PCWSTR>,
{
#[cfg_attr(windows, link(name = "windows"))]
extern "system" {
fn RemoveFontResourceExW(name: ::windows::core::PCWSTR, fl: u32, pdv: *mut ::core::ffi::c_void) -> super::super::Foundation::BOOL;
}
RemoveFontResourceExW(name.into(), fl, ::core::mem::transmute(pdv))
RemoveFontResourceExW(name.into(), fl, ::core::mem::transmute(pdv.unwrap_or(::std::ptr::null_mut())))
}
#[doc = "*Required features: `\"Win32_Graphics_Gdi\"`, `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
Expand Down
Expand Up @@ -307,8 +307,8 @@ impl IXAudio2 {
}
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub unsafe fn SetDebugConfiguration(&self, pdebugconfiguration: ::core::option::Option<*const XAUDIO2_DEBUG_CONFIGURATION>, preserved: *mut ::core::ffi::c_void) {
(::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))
pub unsafe fn SetDebugConfiguration(&self, pdebugconfiguration: ::core::option::Option<*const XAUDIO2_DEBUG_CONFIGURATION>, preserved: ::core::option::Option<*mut ::core::ffi::c_void>) {
(::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())))
}
}
impl ::core::convert::From<IXAudio2> for ::windows::core::IUnknown {
Expand Down
12 changes: 6 additions & 6 deletions crates/libs/windows/src/Windows/Win32/Media/DirectShow/mod.rs
Expand Up @@ -4182,8 +4182,8 @@ pub struct IAMRebuild_Vtbl {
#[repr(transparent)]
pub struct IAMResourceControl(::windows::core::IUnknown);
impl IAMResourceControl {
pub unsafe fn Reserve(&self, dwflags: u32, pvreserved: *mut ::core::ffi::c_void) -> ::windows::core::Result<()> {
(::windows::core::Interface::vtable(self).Reserve)(::windows::core::Interface::as_raw(self), dwflags, ::core::mem::transmute(pvreserved)).ok()
pub unsafe fn Reserve(&self, dwflags: u32, pvreserved: ::core::option::Option<*mut ::core::ffi::c_void>) -> ::windows::core::Result<()> {
(::windows::core::Interface::vtable(self).Reserve)(::windows::core::Interface::as_raw(self), dwflags, ::core::mem::transmute(pvreserved.unwrap_or(::std::ptr::null_mut()))).ok()
}
}
impl ::core::convert::From<IAMResourceControl> for ::windows::core::IUnknown {
Expand Down Expand Up @@ -28602,11 +28602,11 @@ impl IFilterGraph2 {
{
(::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()
}
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::Result<()>
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
where
P0: ::std::convert::Into<::windows::core::InParam<'a, IPin>>,
{
(::windows::core::Interface::vtable(self).RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext)).ok()
(::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()
}
}
impl ::core::convert::From<IFilterGraph2> for ::windows::core::IUnknown {
Expand Down Expand Up @@ -28804,11 +28804,11 @@ impl IFilterGraph3 {
{
(::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()
}
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: *mut u32) -> ::windows::core::Result<()>
pub unsafe fn RenderEx<'a, P0>(&self, ppinout: P0, dwflags: u32, pvcontext: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()>
where
P0: ::std::convert::Into<::windows::core::InParam<'a, IPin>>,
{
(::windows::core::Interface::vtable(self).base__.RenderEx)(::windows::core::Interface::as_raw(self), ppinout.into().abi(), dwflags, ::core::mem::transmute(pvcontext)).ok()
(::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()
}
#[doc = "*Required features: `\"Win32_System_Com\"`*"]
#[cfg(feature = "Win32_System_Com")]
Expand Down
Expand Up @@ -9147,8 +9147,8 @@ impl IDirectXVideoDecoderService {
}
#[doc = "*Required features: `\"Win32_Graphics_Direct3D9\"`*"]
#[cfg(feature = "Win32_Graphics_Direct3D9")]
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<()> {
(::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()
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<()> {
(::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()
}
#[doc = "*Required features: `\"Win32_Graphics_Direct3D9\"`*"]
#[cfg(feature = "Win32_Graphics_Direct3D9")]
Expand Down Expand Up @@ -28919,11 +28919,11 @@ impl IMFSourceReader {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
(::windows::core::Interface::vtable(self).GetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(result__.as_mut_ptr())).from_abi::<IMFMediaType>(result__)
}
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: *mut u32, pmediatype: P0) -> ::windows::core::Result<()>
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: ::core::option::Option<*mut u32>, pmediatype: P0) -> ::windows::core::Result<()>
where
P0: ::std::convert::Into<::windows::core::InParam<'a, IMFMediaType>>,
{
(::windows::core::Interface::vtable(self).SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved), pmediatype.into().abi()).ok()
(::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()
}
#[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com_StructuredStorage\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]
Expand Down Expand Up @@ -29180,11 +29180,11 @@ impl IMFSourceReaderEx {
let mut result__ = ::core::mem::MaybeUninit::zeroed();
(::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__)
}
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: *mut u32, pmediatype: P0) -> ::windows::core::Result<()>
pub unsafe fn SetCurrentMediaType<'a, P0>(&self, dwstreamindex: u32, pdwreserved: ::core::option::Option<*mut u32>, pmediatype: P0) -> ::windows::core::Result<()>
where
P0: ::std::convert::Into<::windows::core::InParam<'a, IMFMediaType>>,
{
(::windows::core::Interface::vtable(self).base__.SetCurrentMediaType)(::windows::core::Interface::as_raw(self), dwstreamindex, ::core::mem::transmute(pdwreserved), pmediatype.into().abi()).ok()
(::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()
}
#[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Com_StructuredStorage\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Com_StructuredStorage"))]
Expand Down