blob: 41722d8b8ece2901a3eaf877b58aaae3e09603a9 [file] [log] [blame]
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsAggregateControl_Impl: Sized {
fn KsAddAggregate(&self, aggregateclass: *const ::windows_core::GUID) -> ::windows_core::Result<()>;
fn KsRemoveAggregate(&self, aggregateclass: *const ::windows_core::GUID) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsAggregateControl {}
impl IKsAggregateControl_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAggregateControl_Impl, const OFFSET: isize>() -> IKsAggregateControl_Vtbl {
unsafe extern "system" fn KsAddAggregate<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAggregateControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, aggregateclass: *const ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsAddAggregate(::core::mem::transmute_copy(&aggregateclass)).into()
}
unsafe extern "system" fn KsRemoveAggregate<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAggregateControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, aggregateclass: *const ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsRemoveAggregate(::core::mem::transmute_copy(&aggregateclass)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsAddAggregate: KsAddAggregate::<Identity, Impl, OFFSET>,
KsRemoveAggregate: KsRemoveAggregate::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsAggregateControl as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsAllocator_Impl: Sized {
fn KsGetAllocatorHandle(&self) -> super::super::Foundation::HANDLE;
fn KsGetAllocatorMode(&self) -> KSALLOCATORMODE;
fn KsGetAllocatorStatus(&self, allocatorstatus: *mut KSSTREAMALLOCATOR_STATUS) -> ::windows_core::Result<()>;
fn KsSetAllocatorMode(&self, mode: KSALLOCATORMODE);
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsAllocator {}
#[cfg(feature = "Win32_Foundation")]
impl IKsAllocator_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocator_Impl, const OFFSET: isize>() -> IKsAllocator_Vtbl {
unsafe extern "system" fn KsGetAllocatorHandle<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> super::super::Foundation::HANDLE {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetAllocatorHandle()
}
unsafe extern "system" fn KsGetAllocatorMode<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> KSALLOCATORMODE {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetAllocatorMode()
}
unsafe extern "system" fn KsGetAllocatorStatus<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocatorstatus: *mut KSSTREAMALLOCATOR_STATUS) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetAllocatorStatus(::core::mem::transmute_copy(&allocatorstatus)).into()
}
unsafe extern "system" fn KsSetAllocatorMode<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocator_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mode: KSALLOCATORMODE) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetAllocatorMode(::core::mem::transmute_copy(&mode))
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsGetAllocatorHandle: KsGetAllocatorHandle::<Identity, Impl, OFFSET>,
KsGetAllocatorMode: KsGetAllocatorMode::<Identity, Impl, OFFSET>,
KsGetAllocatorStatus: KsGetAllocatorStatus::<Identity, Impl, OFFSET>,
KsSetAllocatorMode: KsSetAllocatorMode::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsAllocator as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsAllocatorEx_Impl: Sized + IKsAllocator_Impl {
fn KsGetProperties(&self) -> *mut ALLOCATOR_PROPERTIES_EX;
fn KsSetProperties(&self, param0: *const ALLOCATOR_PROPERTIES_EX);
fn KsSetAllocatorHandle(&self, allocatorhandle: super::super::Foundation::HANDLE);
fn KsCreateAllocatorAndGetHandle(&self, kspin: ::core::option::Option<&IKsPin>) -> super::super::Foundation::HANDLE;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsAllocatorEx {}
#[cfg(feature = "Win32_Foundation")]
impl IKsAllocatorEx_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocatorEx_Impl, const OFFSET: isize>() -> IKsAllocatorEx_Vtbl {
unsafe extern "system" fn KsGetProperties<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocatorEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> *mut ALLOCATOR_PROPERTIES_EX {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetProperties()
}
unsafe extern "system" fn KsSetProperties<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocatorEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, param0: *const ALLOCATOR_PROPERTIES_EX) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetProperties(::core::mem::transmute_copy(&param0))
}
unsafe extern "system" fn KsSetAllocatorHandle<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocatorEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, allocatorhandle: super::super::Foundation::HANDLE) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetAllocatorHandle(::core::mem::transmute_copy(&allocatorhandle))
}
unsafe extern "system" fn KsCreateAllocatorAndGetHandle<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsAllocatorEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, kspin: *mut ::core::ffi::c_void) -> super::super::Foundation::HANDLE {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsCreateAllocatorAndGetHandle(::windows_core::from_raw_borrowed(&kspin))
}
Self {
base__: IKsAllocator_Vtbl::new::<Identity, Impl, OFFSET>(),
KsGetProperties: KsGetProperties::<Identity, Impl, OFFSET>,
KsSetProperties: KsSetProperties::<Identity, Impl, OFFSET>,
KsSetAllocatorHandle: KsSetAllocatorHandle::<Identity, Impl, OFFSET>,
KsCreateAllocatorAndGetHandle: KsCreateAllocatorAndGetHandle::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsAllocatorEx as ::windows_core::ComInterface>::IID || iid == &<IKsAllocator as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsClockPropertySet_Impl: Sized {
fn KsGetTime(&self) -> ::windows_core::Result<i64>;
fn KsSetTime(&self, time: i64) -> ::windows_core::Result<()>;
fn KsGetPhysicalTime(&self) -> ::windows_core::Result<i64>;
fn KsSetPhysicalTime(&self, time: i64) -> ::windows_core::Result<()>;
fn KsGetCorrelatedTime(&self) -> ::windows_core::Result<KSCORRELATED_TIME>;
fn KsSetCorrelatedTime(&self, correlatedtime: *const KSCORRELATED_TIME) -> ::windows_core::Result<()>;
fn KsGetCorrelatedPhysicalTime(&self) -> ::windows_core::Result<KSCORRELATED_TIME>;
fn KsSetCorrelatedPhysicalTime(&self, correlatedtime: *const KSCORRELATED_TIME) -> ::windows_core::Result<()>;
fn KsGetResolution(&self) -> ::windows_core::Result<KSRESOLUTION>;
fn KsGetState(&self) -> ::windows_core::Result<KSSTATE>;
}
impl ::windows_core::RuntimeName for IKsClockPropertySet {}
impl IKsClockPropertySet_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>() -> IKsClockPropertySet_Vtbl {
unsafe extern "system" fn KsGetTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, time: *mut i64) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetTime() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(time, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsSetTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, time: i64) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetTime(::core::mem::transmute_copy(&time)).into()
}
unsafe extern "system" fn KsGetPhysicalTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, time: *mut i64) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetPhysicalTime() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(time, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsSetPhysicalTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, time: i64) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPhysicalTime(::core::mem::transmute_copy(&time)).into()
}
unsafe extern "system" fn KsGetCorrelatedTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, correlatedtime: *mut KSCORRELATED_TIME) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetCorrelatedTime() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(correlatedtime, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsSetCorrelatedTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, correlatedtime: *const KSCORRELATED_TIME) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetCorrelatedTime(::core::mem::transmute_copy(&correlatedtime)).into()
}
unsafe extern "system" fn KsGetCorrelatedPhysicalTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, correlatedtime: *mut KSCORRELATED_TIME) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetCorrelatedPhysicalTime() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(correlatedtime, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsSetCorrelatedPhysicalTime<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, correlatedtime: *const KSCORRELATED_TIME) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetCorrelatedPhysicalTime(::core::mem::transmute_copy(&correlatedtime)).into()
}
unsafe extern "system" fn KsGetResolution<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, resolution: *mut KSRESOLUTION) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetResolution() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(resolution, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsGetState<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsClockPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, state: *mut KSSTATE) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsGetState() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(state, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsGetTime: KsGetTime::<Identity, Impl, OFFSET>,
KsSetTime: KsSetTime::<Identity, Impl, OFFSET>,
KsGetPhysicalTime: KsGetPhysicalTime::<Identity, Impl, OFFSET>,
KsSetPhysicalTime: KsSetPhysicalTime::<Identity, Impl, OFFSET>,
KsGetCorrelatedTime: KsGetCorrelatedTime::<Identity, Impl, OFFSET>,
KsSetCorrelatedTime: KsSetCorrelatedTime::<Identity, Impl, OFFSET>,
KsGetCorrelatedPhysicalTime: KsGetCorrelatedPhysicalTime::<Identity, Impl, OFFSET>,
KsSetCorrelatedPhysicalTime: KsSetCorrelatedPhysicalTime::<Identity, Impl, OFFSET>,
KsGetResolution: KsGetResolution::<Identity, Impl, OFFSET>,
KsGetState: KsGetState::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsClockPropertySet as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsControl_Impl: Sized {
fn KsProperty(&self, property: *const KSIDENTIFIER, propertylength: u32, propertydata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::Result<()>;
fn KsMethod(&self, method: *const KSIDENTIFIER, methodlength: u32, methoddata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::Result<()>;
fn KsEvent(&self, event: *const KSIDENTIFIER, eventlength: u32, eventdata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsControl {}
impl IKsControl_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsControl_Impl, const OFFSET: isize>() -> IKsControl_Vtbl {
unsafe extern "system" fn KsProperty<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, property: *const KSIDENTIFIER, propertylength: u32, propertydata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsProperty(::core::mem::transmute_copy(&property), ::core::mem::transmute_copy(&propertylength), ::core::mem::transmute_copy(&propertydata), ::core::mem::transmute_copy(&datalength), ::core::mem::transmute_copy(&bytesreturned)).into()
}
unsafe extern "system" fn KsMethod<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, method: *const KSIDENTIFIER, methodlength: u32, methoddata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsMethod(::core::mem::transmute_copy(&method), ::core::mem::transmute_copy(&methodlength), ::core::mem::transmute_copy(&methoddata), ::core::mem::transmute_copy(&datalength), ::core::mem::transmute_copy(&bytesreturned)).into()
}
unsafe extern "system" fn KsEvent<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, event: *const KSIDENTIFIER, eventlength: u32, eventdata: *mut ::core::ffi::c_void, datalength: u32, bytesreturned: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsEvent(::core::mem::transmute_copy(&event), ::core::mem::transmute_copy(&eventlength), ::core::mem::transmute_copy(&eventdata), ::core::mem::transmute_copy(&datalength), ::core::mem::transmute_copy(&bytesreturned)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsProperty: KsProperty::<Identity, Impl, OFFSET>,
KsMethod: KsMethod::<Identity, Impl, OFFSET>,
KsEvent: KsEvent::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsControl as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"Win32_Media_MediaFoundation\"`, `\"implement\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
pub trait IKsDataTypeCompletion_Impl: Sized {
fn KsCompleteMediaType(&self, filterhandle: super::super::Foundation::HANDLE, pinfactoryid: u32, ammediatype: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl ::windows_core::RuntimeName for IKsDataTypeCompletion {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_MediaFoundation"))]
impl IKsDataTypeCompletion_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeCompletion_Impl, const OFFSET: isize>() -> IKsDataTypeCompletion_Vtbl {
unsafe extern "system" fn KsCompleteMediaType<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeCompletion_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, filterhandle: super::super::Foundation::HANDLE, pinfactoryid: u32, ammediatype: *mut super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsCompleteMediaType(::core::mem::transmute_copy(&filterhandle), ::core::mem::transmute_copy(&pinfactoryid), ::core::mem::transmute_copy(&ammediatype)).into()
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), KsCompleteMediaType: KsCompleteMediaType::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsDataTypeCompletion as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"Win32_Media_DirectShow\"`, `\"Win32_Media_MediaFoundation\"`, `\"implement\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow", feature = "Win32_Media_MediaFoundation"))]
pub trait IKsDataTypeHandler_Impl: Sized {
fn KsCompleteIoOperation(&self, sample: ::core::option::Option<&super::DirectShow::IMediaSample>, streamheader: *mut ::core::ffi::c_void, iooperation: KSIOOPERATION, cancelled: super::super::Foundation::BOOL) -> ::windows_core::Result<()>;
fn KsIsMediaTypeInRanges(&self, dataranges: *const ::core::ffi::c_void) -> ::windows_core::Result<()>;
fn KsPrepareIoOperation(&self, sample: ::core::option::Option<&super::DirectShow::IMediaSample>, streamheader: *mut ::core::ffi::c_void, iooperation: KSIOOPERATION) -> ::windows_core::Result<()>;
fn KsQueryExtendedSize(&self) -> ::windows_core::Result<u32>;
fn KsSetMediaType(&self, ammediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow", feature = "Win32_Media_MediaFoundation"))]
impl ::windows_core::RuntimeName for IKsDataTypeHandler {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow", feature = "Win32_Media_MediaFoundation"))]
impl IKsDataTypeHandler_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>() -> IKsDataTypeHandler_Vtbl {
unsafe extern "system" fn KsCompleteIoOperation<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sample: *mut ::core::ffi::c_void, streamheader: *mut ::core::ffi::c_void, iooperation: KSIOOPERATION, cancelled: super::super::Foundation::BOOL) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsCompleteIoOperation(::windows_core::from_raw_borrowed(&sample), ::core::mem::transmute_copy(&streamheader), ::core::mem::transmute_copy(&iooperation), ::core::mem::transmute_copy(&cancelled)).into()
}
unsafe extern "system" fn KsIsMediaTypeInRanges<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dataranges: *const ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsIsMediaTypeInRanges(::core::mem::transmute_copy(&dataranges)).into()
}
unsafe extern "system" fn KsPrepareIoOperation<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sample: *mut ::core::ffi::c_void, streamheader: *mut ::core::ffi::c_void, iooperation: KSIOOPERATION) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsPrepareIoOperation(::windows_core::from_raw_borrowed(&sample), ::core::mem::transmute_copy(&streamheader), ::core::mem::transmute_copy(&iooperation)).into()
}
unsafe extern "system" fn KsQueryExtendedSize<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, extendedsize: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsQueryExtendedSize() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(extendedsize, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsSetMediaType<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsDataTypeHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ammediatype: *const super::MediaFoundation::AM_MEDIA_TYPE) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetMediaType(::core::mem::transmute_copy(&ammediatype)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsCompleteIoOperation: KsCompleteIoOperation::<Identity, Impl, OFFSET>,
KsIsMediaTypeInRanges: KsIsMediaTypeInRanges::<Identity, Impl, OFFSET>,
KsPrepareIoOperation: KsPrepareIoOperation::<Identity, Impl, OFFSET>,
KsQueryExtendedSize: KsQueryExtendedSize::<Identity, Impl, OFFSET>,
KsSetMediaType: KsSetMediaType::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsDataTypeHandler as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsFormatSupport_Impl: Sized {
fn IsFormatSupported(&self, pksformat: *mut KSDATAFORMAT, cbformat: u32, pbsupported: *mut super::super::Foundation::BOOL) -> ::windows_core::Result<()>;
fn GetDevicePreferredFormat(&self) -> ::windows_core::Result<*mut KSDATAFORMAT>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsFormatSupport {}
#[cfg(feature = "Win32_Foundation")]
impl IKsFormatSupport_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsFormatSupport_Impl, const OFFSET: isize>() -> IKsFormatSupport_Vtbl {
unsafe extern "system" fn IsFormatSupported<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsFormatSupport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pksformat: *mut KSDATAFORMAT, cbformat: u32, pbsupported: *mut super::super::Foundation::BOOL) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.IsFormatSupported(::core::mem::transmute_copy(&pksformat), ::core::mem::transmute_copy(&cbformat), ::core::mem::transmute_copy(&pbsupported)).into()
}
unsafe extern "system" fn GetDevicePreferredFormat<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsFormatSupport_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ppksformat: *mut *mut KSDATAFORMAT) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetDevicePreferredFormat() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(ppksformat, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
IsFormatSupported: IsFormatSupported::<Identity, Impl, OFFSET>,
GetDevicePreferredFormat: GetDevicePreferredFormat::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsFormatSupport as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"Win32_Media_DirectShow\"`, `\"implement\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
pub trait IKsInterfaceHandler_Impl: Sized {
fn KsSetPin(&self, kspin: ::core::option::Option<&IKsPin>) -> ::windows_core::Result<()>;
fn KsProcessMediaSamples(&self, ksdatatypehandler: ::core::option::Option<&IKsDataTypeHandler>, samplelist: *const ::core::option::Option<super::DirectShow::IMediaSample>, samplecount: *mut i32, iooperation: KSIOOPERATION, streamsegment: *mut *mut KSSTREAM_SEGMENT) -> ::windows_core::Result<()>;
fn KsCompleteIo(&self, streamsegment: *mut KSSTREAM_SEGMENT) -> ::windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl ::windows_core::RuntimeName for IKsInterfaceHandler {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl IKsInterfaceHandler_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsInterfaceHandler_Impl, const OFFSET: isize>() -> IKsInterfaceHandler_Vtbl {
unsafe extern "system" fn KsSetPin<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsInterfaceHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, kspin: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPin(::windows_core::from_raw_borrowed(&kspin)).into()
}
unsafe extern "system" fn KsProcessMediaSamples<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsInterfaceHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ksdatatypehandler: *mut ::core::ffi::c_void, samplelist: *const *mut ::core::ffi::c_void, samplecount: *mut i32, iooperation: KSIOOPERATION, streamsegment: *mut *mut KSSTREAM_SEGMENT) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsProcessMediaSamples(::windows_core::from_raw_borrowed(&ksdatatypehandler), ::core::mem::transmute_copy(&samplelist), ::core::mem::transmute_copy(&samplecount), ::core::mem::transmute_copy(&iooperation), ::core::mem::transmute_copy(&streamsegment)).into()
}
unsafe extern "system" fn KsCompleteIo<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsInterfaceHandler_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streamsegment: *mut KSSTREAM_SEGMENT) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsCompleteIo(::core::mem::transmute_copy(&streamsegment)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsSetPin: KsSetPin::<Identity, Impl, OFFSET>,
KsProcessMediaSamples: KsProcessMediaSamples::<Identity, Impl, OFFSET>,
KsCompleteIo: KsCompleteIo::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsInterfaceHandler as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsJackContainerId_Impl: Sized {
fn GetJackContainerId(&self) -> ::windows_core::Result<::windows_core::GUID>;
}
impl ::windows_core::RuntimeName for IKsJackContainerId {}
impl IKsJackContainerId_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackContainerId_Impl, const OFFSET: isize>() -> IKsJackContainerId_Vtbl {
unsafe extern "system" fn GetJackContainerId<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackContainerId_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pjackcontainerid: *mut ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackContainerId() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pjackcontainerid, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetJackContainerId: GetJackContainerId::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsJackContainerId as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsJackDescription_Impl: Sized {
fn GetJackCount(&self) -> ::windows_core::Result<u32>;
fn GetJackDescription(&self, njack: u32, pdescription: *mut KSJACK_DESCRIPTION) -> ::windows_core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsJackDescription {}
#[cfg(feature = "Win32_Foundation")]
impl IKsJackDescription_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription_Impl, const OFFSET: isize>() -> IKsJackDescription_Vtbl {
unsafe extern "system" fn GetJackCount<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcjacks: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackCount() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pcjacks, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn GetJackDescription<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, njack: u32, pdescription: *mut KSJACK_DESCRIPTION) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.GetJackDescription(::core::mem::transmute_copy(&njack), ::core::mem::transmute_copy(&pdescription)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetJackCount: GetJackCount::<Identity, Impl, OFFSET>,
GetJackDescription: GetJackDescription::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsJackDescription as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsJackDescription2_Impl: Sized {
fn GetJackCount(&self) -> ::windows_core::Result<u32>;
fn GetJackDescription2(&self, njack: u32) -> ::windows_core::Result<KSJACK_DESCRIPTION2>;
}
impl ::windows_core::RuntimeName for IKsJackDescription2 {}
impl IKsJackDescription2_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription2_Impl, const OFFSET: isize>() -> IKsJackDescription2_Vtbl {
unsafe extern "system" fn GetJackCount<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcjacks: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackCount() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pcjacks, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn GetJackDescription2<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription2_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, njack: u32, pdescription2: *mut KSJACK_DESCRIPTION2) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackDescription2(::core::mem::transmute_copy(&njack)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pdescription2, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetJackCount: GetJackCount::<Identity, Impl, OFFSET>,
GetJackDescription2: GetJackDescription2::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsJackDescription2 as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsJackDescription3_Impl: Sized {
fn GetJackCount(&self) -> ::windows_core::Result<u32>;
fn GetJackDescription3(&self, njack: u32) -> ::windows_core::Result<KSJACK_DESCRIPTION3>;
}
impl ::windows_core::RuntimeName for IKsJackDescription3 {}
impl IKsJackDescription3_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription3_Impl, const OFFSET: isize>() -> IKsJackDescription3_Vtbl {
unsafe extern "system" fn GetJackCount<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pcjacks: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackCount() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pcjacks, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn GetJackDescription3<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackDescription3_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, njack: u32, pdescription3: *mut KSJACK_DESCRIPTION3) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.GetJackDescription3(::core::mem::transmute_copy(&njack)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pdescription3, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetJackCount: GetJackCount::<Identity, Impl, OFFSET>,
GetJackDescription3: GetJackDescription3::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsJackDescription3 as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsJackSinkInformation_Impl: Sized {
fn GetJackSinkInformation(&self, pjacksinkinformation: *mut KSJACK_SINK_INFORMATION) -> ::windows_core::Result<()>;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsJackSinkInformation {}
#[cfg(feature = "Win32_Foundation")]
impl IKsJackSinkInformation_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackSinkInformation_Impl, const OFFSET: isize>() -> IKsJackSinkInformation_Vtbl {
unsafe extern "system" fn GetJackSinkInformation<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsJackSinkInformation_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pjacksinkinformation: *mut KSJACK_SINK_INFORMATION) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.GetJackSinkInformation(::core::mem::transmute_copy(&pjacksinkinformation)).into()
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetJackSinkInformation: GetJackSinkInformation::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsJackSinkInformation as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsNodeControl_Impl: Sized {
fn SetNodeId(&self, dwnodeid: u32) -> ::windows_core::Result<()>;
fn SetKsControl(&self, pkscontrol: *const ::core::ffi::c_void) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsNodeControl {}
impl IKsNodeControl_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>() -> IKsNodeControl_Vtbl {
unsafe extern "system" fn SetNodeId<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.SetNodeId(::core::mem::transmute_copy(&dwnodeid)).into()
}
unsafe extern "system" fn SetKsControl<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsNodeControl_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pkscontrol: *const ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.SetKsControl(::core::mem::transmute_copy(&pkscontrol)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
SetNodeId: SetNodeId::<Identity, Impl, OFFSET>,
SetKsControl: SetKsControl::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsNodeControl as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsNotifyEvent_Impl: Sized {
fn KsNotifyEvent(&self, event: u32, lparam1: usize, lparam2: usize) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsNotifyEvent {}
impl IKsNotifyEvent_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsNotifyEvent_Impl, const OFFSET: isize>() -> IKsNotifyEvent_Vtbl {
unsafe extern "system" fn KsNotifyEvent<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsNotifyEvent_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, event: u32, lparam1: usize, lparam2: usize) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsNotifyEvent(::core::mem::transmute_copy(&event), ::core::mem::transmute_copy(&lparam1), ::core::mem::transmute_copy(&lparam2)).into()
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), KsNotifyEvent: KsNotifyEvent::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsNotifyEvent as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsObject_Impl: Sized {
fn KsGetObjectHandle(&self) -> super::super::Foundation::HANDLE;
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsObject {}
#[cfg(feature = "Win32_Foundation")]
impl IKsObject_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsObject_Impl, const OFFSET: isize>() -> IKsObject_Vtbl {
unsafe extern "system" fn KsGetObjectHandle<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsObject_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> super::super::Foundation::HANDLE {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetObjectHandle()
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), KsGetObjectHandle: KsGetObjectHandle::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsObject as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"Win32_Media_DirectShow\"`, `\"implement\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
pub trait IKsPin_Impl: Sized {
fn KsQueryMediums(&self) -> ::windows_core::Result<*mut KSMULTIPLE_ITEM>;
fn KsQueryInterfaces(&self) -> ::windows_core::Result<*mut KSMULTIPLE_ITEM>;
fn KsCreateSinkPinHandle(&self, interface: *const KSIDENTIFIER, medium: *const KSIDENTIFIER) -> ::windows_core::Result<()>;
fn KsGetCurrentCommunication(&self, communication: *mut KSPIN_COMMUNICATION, interface: *mut KSIDENTIFIER, medium: *mut KSIDENTIFIER) -> ::windows_core::Result<()>;
fn KsPropagateAcquire(&self) -> ::windows_core::Result<()>;
fn KsDeliver(&self, sample: ::core::option::Option<&super::DirectShow::IMediaSample>, flags: u32) -> ::windows_core::Result<()>;
fn KsMediaSamplesCompleted(&self, streamsegment: *const KSSTREAM_SEGMENT) -> ::windows_core::Result<()>;
fn KsPeekAllocator(&self, operation: KSPEEKOPERATION) -> ::core::option::Option<super::DirectShow::IMemAllocator>;
fn KsReceiveAllocator(&self, memallocator: ::core::option::Option<&super::DirectShow::IMemAllocator>) -> ::windows_core::Result<()>;
fn KsRenegotiateAllocator(&self) -> ::windows_core::Result<()>;
fn KsIncrementPendingIoCount(&self) -> i32;
fn KsDecrementPendingIoCount(&self) -> i32;
fn KsQualityNotify(&self, proportion: u32, timedelta: i64) -> ::windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl ::windows_core::RuntimeName for IKsPin {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl IKsPin_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>() -> IKsPin_Vtbl {
unsafe extern "system" fn KsQueryMediums<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, mediumlist: *mut *mut KSMULTIPLE_ITEM) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsQueryMediums() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(mediumlist, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsQueryInterfaces<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, interfacelist: *mut *mut KSMULTIPLE_ITEM) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsQueryInterfaces() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(interfacelist, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn KsCreateSinkPinHandle<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, interface: *const KSIDENTIFIER, medium: *const KSIDENTIFIER) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsCreateSinkPinHandle(::core::mem::transmute_copy(&interface), ::core::mem::transmute_copy(&medium)).into()
}
unsafe extern "system" fn KsGetCurrentCommunication<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, communication: *mut KSPIN_COMMUNICATION, interface: *mut KSIDENTIFIER, medium: *mut KSIDENTIFIER) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetCurrentCommunication(::core::mem::transmute_copy(&communication), ::core::mem::transmute_copy(&interface), ::core::mem::transmute_copy(&medium)).into()
}
unsafe extern "system" fn KsPropagateAcquire<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsPropagateAcquire().into()
}
unsafe extern "system" fn KsDeliver<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sample: *mut ::core::ffi::c_void, flags: u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsDeliver(::windows_core::from_raw_borrowed(&sample), ::core::mem::transmute_copy(&flags)).into()
}
unsafe extern "system" fn KsMediaSamplesCompleted<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, streamsegment: *const KSSTREAM_SEGMENT) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsMediaSamplesCompleted(::core::mem::transmute_copy(&streamsegment)).into()
}
unsafe extern "system" fn KsPeekAllocator<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, operation: KSPEEKOPERATION) -> ::core::option::Option<super::DirectShow::IMemAllocator> {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsPeekAllocator(::core::mem::transmute_copy(&operation))
}
unsafe extern "system" fn KsReceiveAllocator<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, memallocator: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsReceiveAllocator(::windows_core::from_raw_borrowed(&memallocator)).into()
}
unsafe extern "system" fn KsRenegotiateAllocator<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsRenegotiateAllocator().into()
}
unsafe extern "system" fn KsIncrementPendingIoCount<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsIncrementPendingIoCount()
}
unsafe extern "system" fn KsDecrementPendingIoCount<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> i32 {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsDecrementPendingIoCount()
}
unsafe extern "system" fn KsQualityNotify<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPin_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, proportion: u32, timedelta: i64) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsQualityNotify(::core::mem::transmute_copy(&proportion), ::core::mem::transmute_copy(&timedelta)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsQueryMediums: KsQueryMediums::<Identity, Impl, OFFSET>,
KsQueryInterfaces: KsQueryInterfaces::<Identity, Impl, OFFSET>,
KsCreateSinkPinHandle: KsCreateSinkPinHandle::<Identity, Impl, OFFSET>,
KsGetCurrentCommunication: KsGetCurrentCommunication::<Identity, Impl, OFFSET>,
KsPropagateAcquire: KsPropagateAcquire::<Identity, Impl, OFFSET>,
KsDeliver: KsDeliver::<Identity, Impl, OFFSET>,
KsMediaSamplesCompleted: KsMediaSamplesCompleted::<Identity, Impl, OFFSET>,
KsPeekAllocator: KsPeekAllocator::<Identity, Impl, OFFSET>,
KsReceiveAllocator: KsReceiveAllocator::<Identity, Impl, OFFSET>,
KsRenegotiateAllocator: KsRenegotiateAllocator::<Identity, Impl, OFFSET>,
KsIncrementPendingIoCount: KsIncrementPendingIoCount::<Identity, Impl, OFFSET>,
KsDecrementPendingIoCount: KsDecrementPendingIoCount::<Identity, Impl, OFFSET>,
KsQualityNotify: KsQualityNotify::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsPin as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"Win32_Media_DirectShow\"`, `\"implement\"`*"]
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
pub trait IKsPinEx_Impl: Sized + IKsPin_Impl {
fn KsNotifyError(&self, sample: ::core::option::Option<&super::DirectShow::IMediaSample>, hr: ::windows_core::HRESULT);
}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl ::windows_core::RuntimeName for IKsPinEx {}
#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Media_DirectShow"))]
impl IKsPinEx_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinEx_Impl, const OFFSET: isize>() -> IKsPinEx_Vtbl {
unsafe extern "system" fn KsNotifyError<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinEx_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, sample: *mut ::core::ffi::c_void, hr: ::windows_core::HRESULT) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsNotifyError(::windows_core::from_raw_borrowed(&sample), ::core::mem::transmute_copy(&hr))
}
Self { base__: IKsPin_Vtbl::new::<Identity, Impl, OFFSET>(), KsNotifyError: KsNotifyError::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsPinEx as ::windows_core::ComInterface>::IID || iid == &<IKsPin as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsPinFactory_Impl: Sized {
fn KsPinFactory(&self) -> ::windows_core::Result<u32>;
}
impl ::windows_core::RuntimeName for IKsPinFactory {}
impl IKsPinFactory_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinFactory_Impl, const OFFSET: isize>() -> IKsPinFactory_Vtbl {
unsafe extern "system" fn KsPinFactory<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinFactory_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pinfactory: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.KsPinFactory() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pinfactory, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), KsPinFactory: KsPinFactory::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsPinFactory as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Media_DirectShow\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Media_DirectShow")]
pub trait IKsPinPipe_Impl: Sized {
fn KsGetPinFramingCache(&self, framingex: *mut *mut KSALLOCATOR_FRAMING_EX, framingprop: *mut FRAMING_PROP, option: FRAMING_CACHE_OPS) -> ::windows_core::Result<()>;
fn KsSetPinFramingCache(&self, framingex: *const KSALLOCATOR_FRAMING_EX, framingprop: *const FRAMING_PROP, option: FRAMING_CACHE_OPS) -> ::windows_core::Result<()>;
fn KsGetConnectedPin(&self) -> ::core::option::Option<super::DirectShow::IPin>;
fn KsGetPipe(&self, operation: KSPEEKOPERATION) -> ::core::option::Option<IKsAllocatorEx>;
fn KsSetPipe(&self, ksallocator: ::core::option::Option<&IKsAllocatorEx>) -> ::windows_core::Result<()>;
fn KsGetPipeAllocatorFlag(&self) -> u32;
fn KsSetPipeAllocatorFlag(&self, flag: u32) -> ::windows_core::Result<()>;
fn KsGetPinBusCache(&self) -> ::windows_core::GUID;
fn KsSetPinBusCache(&self, bus: &::windows_core::GUID) -> ::windows_core::Result<()>;
fn KsGetPinName(&self) -> ::windows_core::PWSTR;
fn KsGetFilterName(&self) -> ::windows_core::PWSTR;
}
#[cfg(feature = "Win32_Media_DirectShow")]
impl ::windows_core::RuntimeName for IKsPinPipe {}
#[cfg(feature = "Win32_Media_DirectShow")]
impl IKsPinPipe_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>() -> IKsPinPipe_Vtbl {
unsafe extern "system" fn KsGetPinFramingCache<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, framingex: *mut *mut KSALLOCATOR_FRAMING_EX, framingprop: *mut FRAMING_PROP, option: FRAMING_CACHE_OPS) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetPinFramingCache(::core::mem::transmute_copy(&framingex), ::core::mem::transmute_copy(&framingprop), ::core::mem::transmute_copy(&option)).into()
}
unsafe extern "system" fn KsSetPinFramingCache<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, framingex: *const KSALLOCATOR_FRAMING_EX, framingprop: *const FRAMING_PROP, option: FRAMING_CACHE_OPS) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPinFramingCache(::core::mem::transmute_copy(&framingex), ::core::mem::transmute_copy(&framingprop), ::core::mem::transmute_copy(&option)).into()
}
unsafe extern "system" fn KsGetConnectedPin<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::core::option::Option<super::DirectShow::IPin> {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetConnectedPin()
}
unsafe extern "system" fn KsGetPipe<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, operation: KSPEEKOPERATION) -> ::core::option::Option<IKsAllocatorEx> {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetPipe(::core::mem::transmute_copy(&operation))
}
unsafe extern "system" fn KsSetPipe<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, ksallocator: *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPipe(::windows_core::from_raw_borrowed(&ksallocator)).into()
}
unsafe extern "system" fn KsGetPipeAllocatorFlag<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> u32 {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetPipeAllocatorFlag()
}
unsafe extern "system" fn KsSetPipeAllocatorFlag<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, flag: u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPipeAllocatorFlag(::core::mem::transmute_copy(&flag)).into()
}
unsafe extern "system" fn KsGetPinBusCache<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, result__: *mut ::windows_core::GUID) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
*result__ = this.KsGetPinBusCache()
}
unsafe extern "system" fn KsSetPinBusCache<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, bus: ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsSetPinBusCache(::core::mem::transmute(&bus)).into()
}
unsafe extern "system" fn KsGetPinName<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows_core::PWSTR {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetPinName()
}
unsafe extern "system" fn KsGetFilterName<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPinPipe_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void) -> ::windows_core::PWSTR {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsGetFilterName()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
KsGetPinFramingCache: KsGetPinFramingCache::<Identity, Impl, OFFSET>,
KsSetPinFramingCache: KsSetPinFramingCache::<Identity, Impl, OFFSET>,
KsGetConnectedPin: KsGetConnectedPin::<Identity, Impl, OFFSET>,
KsGetPipe: KsGetPipe::<Identity, Impl, OFFSET>,
KsSetPipe: KsSetPipe::<Identity, Impl, OFFSET>,
KsGetPipeAllocatorFlag: KsGetPipeAllocatorFlag::<Identity, Impl, OFFSET>,
KsSetPipeAllocatorFlag: KsSetPipeAllocatorFlag::<Identity, Impl, OFFSET>,
KsGetPinBusCache: KsGetPinBusCache::<Identity, Impl, OFFSET>,
KsSetPinBusCache: KsSetPinBusCache::<Identity, Impl, OFFSET>,
KsGetPinName: KsGetPinName::<Identity, Impl, OFFSET>,
KsGetFilterName: KsGetFilterName::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsPinPipe as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsPropertySet_Impl: Sized {
fn Set(&self, guidpropset: *const ::windows_core::GUID, dwpropid: u32, pinstancedata: *const ::core::ffi::c_void, cbinstancedata: u32, ppropdata: *const ::core::ffi::c_void, cbpropdata: u32) -> ::windows_core::Result<()>;
fn Get(&self, guidpropset: *const ::windows_core::GUID, dwpropid: u32, pinstancedata: *const ::core::ffi::c_void, cbinstancedata: u32, ppropdata: *mut ::core::ffi::c_void, cbpropdata: u32, pcbreturned: *mut u32) -> ::windows_core::Result<()>;
fn QuerySupported(&self, guidpropset: *const ::windows_core::GUID, dwpropid: u32) -> ::windows_core::Result<u32>;
}
impl ::windows_core::RuntimeName for IKsPropertySet {}
impl IKsPropertySet_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPropertySet_Impl, const OFFSET: isize>() -> IKsPropertySet_Vtbl {
unsafe extern "system" fn Set<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidpropset: *const ::windows_core::GUID, dwpropid: u32, pinstancedata: *const ::core::ffi::c_void, cbinstancedata: u32, ppropdata: *const ::core::ffi::c_void, cbpropdata: u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.Set(::core::mem::transmute_copy(&guidpropset), ::core::mem::transmute_copy(&dwpropid), ::core::mem::transmute_copy(&pinstancedata), ::core::mem::transmute_copy(&cbinstancedata), ::core::mem::transmute_copy(&ppropdata), ::core::mem::transmute_copy(&cbpropdata)).into()
}
unsafe extern "system" fn Get<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidpropset: *const ::windows_core::GUID, dwpropid: u32, pinstancedata: *const ::core::ffi::c_void, cbinstancedata: u32, ppropdata: *mut ::core::ffi::c_void, cbpropdata: u32, pcbreturned: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.Get(::core::mem::transmute_copy(&guidpropset), ::core::mem::transmute_copy(&dwpropid), ::core::mem::transmute_copy(&pinstancedata), ::core::mem::transmute_copy(&cbinstancedata), ::core::mem::transmute_copy(&ppropdata), ::core::mem::transmute_copy(&cbpropdata), ::core::mem::transmute_copy(&pcbreturned)).into()
}
unsafe extern "system" fn QuerySupported<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsPropertySet_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, guidpropset: *const ::windows_core::GUID, dwpropid: u32, ptypesupport: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.QuerySupported(::core::mem::transmute_copy(&guidpropset), ::core::mem::transmute_copy(&dwpropid)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(ptypesupport, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Set: Set::<Identity, Impl, OFFSET>,
Get: Get::<Identity, Impl, OFFSET>,
QuerySupported: QuerySupported::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsPropertySet as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"Win32_Foundation\"`, `\"implement\"`*"]
#[cfg(feature = "Win32_Foundation")]
pub trait IKsQualityForwarder_Impl: Sized + IKsObject_Impl {
fn KsFlushClient(&self, pin: ::core::option::Option<&IKsPin>);
}
#[cfg(feature = "Win32_Foundation")]
impl ::windows_core::RuntimeName for IKsQualityForwarder {}
#[cfg(feature = "Win32_Foundation")]
impl IKsQualityForwarder_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsQualityForwarder_Impl, const OFFSET: isize>() -> IKsQualityForwarder_Vtbl {
unsafe extern "system" fn KsFlushClient<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsQualityForwarder_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pin: *mut ::core::ffi::c_void) {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.KsFlushClient(::windows_core::from_raw_borrowed(&pin))
}
Self { base__: IKsObject_Vtbl::new::<Identity, Impl, OFFSET>(), KsFlushClient: KsFlushClient::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsQualityForwarder as ::windows_core::ComInterface>::IID || iid == &<IKsObject as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsTopology_Impl: Sized {
fn CreateNodeInstance(&self, nodeid: u32, flags: u32, desiredaccess: u32, unkouter: ::core::option::Option<&::windows_core::IUnknown>, interfaceid: *const ::windows_core::GUID, interface: *mut *mut ::core::ffi::c_void) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsTopology {}
impl IKsTopology_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopology_Impl, const OFFSET: isize>() -> IKsTopology_Vtbl {
unsafe extern "system" fn CreateNodeInstance<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopology_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, nodeid: u32, flags: u32, desiredaccess: u32, unkouter: *mut ::core::ffi::c_void, interfaceid: *const ::windows_core::GUID, interface: *mut *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.CreateNodeInstance(::core::mem::transmute_copy(&nodeid), ::core::mem::transmute_copy(&flags), ::core::mem::transmute_copy(&desiredaccess), ::windows_core::from_raw_borrowed(&unkouter), ::core::mem::transmute_copy(&interfaceid), ::core::mem::transmute_copy(&interface)).into()
}
Self { base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateNodeInstance: CreateNodeInstance::<Identity, Impl, OFFSET> }
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsTopology as ::windows_core::ComInterface>::IID
}
}
#[doc = "*Required features: `\"Win32_Media_KernelStreaming\"`, `\"implement\"`*"]
pub trait IKsTopologyInfo_Impl: Sized {
fn NumCategories(&self) -> ::windows_core::Result<u32>;
fn get_Category(&self, dwindex: u32) -> ::windows_core::Result<::windows_core::GUID>;
fn NumConnections(&self) -> ::windows_core::Result<u32>;
fn get_ConnectionInfo(&self, dwindex: u32) -> ::windows_core::Result<KSTOPOLOGY_CONNECTION>;
fn get_NodeName(&self, dwnodeid: u32, pwchnodename: ::windows_core::PWSTR, dwbufsize: u32, pdwnamelen: *mut u32) -> ::windows_core::Result<()>;
fn NumNodes(&self) -> ::windows_core::Result<u32>;
fn get_NodeType(&self, dwnodeid: u32) -> ::windows_core::Result<::windows_core::GUID>;
fn CreateNodeInstance(&self, dwnodeid: u32, iid: *const ::windows_core::GUID, ppvobject: *mut *mut ::core::ffi::c_void) -> ::windows_core::Result<()>;
}
impl ::windows_core::RuntimeName for IKsTopologyInfo {}
impl IKsTopologyInfo_Vtbl {
pub const fn new<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>() -> IKsTopologyInfo_Vtbl {
unsafe extern "system" fn NumCategories<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumcategories: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.NumCategories() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pdwnumcategories, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn get_Category<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pcategory: *mut ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.get_Category(::core::mem::transmute_copy(&dwindex)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pcategory, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn NumConnections<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumconnections: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.NumConnections() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pdwnumconnections, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn get_ConnectionInfo<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwindex: u32, pconnectioninfo: *mut KSTOPOLOGY_CONNECTION) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.get_ConnectionInfo(::core::mem::transmute_copy(&dwindex)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pconnectioninfo, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn get_NodeName<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, pwchnodename: ::windows_core::PWSTR, dwbufsize: u32, pdwnamelen: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.get_NodeName(::core::mem::transmute_copy(&dwnodeid), ::core::mem::transmute_copy(&pwchnodename), ::core::mem::transmute_copy(&dwbufsize), ::core::mem::transmute_copy(&pdwnamelen)).into()
}
unsafe extern "system" fn NumNodes<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, pdwnumnodes: *mut u32) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.NumNodes() {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pdwnumnodes, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn get_NodeType<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, pnodetype: *mut ::windows_core::GUID) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
match this.get_NodeType(::core::mem::transmute_copy(&dwnodeid)) {
::core::result::Result::Ok(ok__) => {
::core::ptr::write(pnodetype, ::core::mem::transmute(ok__));
::windows_core::HRESULT(0)
}
::core::result::Result::Err(err) => err.into(),
}
}
unsafe extern "system" fn CreateNodeInstance<Identity: ::windows_core::IUnknownImpl<Impl = Impl>, Impl: IKsTopologyInfo_Impl, const OFFSET: isize>(this: *mut ::core::ffi::c_void, dwnodeid: u32, iid: *const ::windows_core::GUID, ppvobject: *mut *mut ::core::ffi::c_void) -> ::windows_core::HRESULT {
let this = (this as *const *const ()).offset(OFFSET) as *const Identity;
let this = (*this).get_impl();
this.CreateNodeInstance(::core::mem::transmute_copy(&dwnodeid), ::core::mem::transmute_copy(&iid), ::core::mem::transmute_copy(&ppvobject)).into()
}
Self {
base__: ::windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
NumCategories: NumCategories::<Identity, Impl, OFFSET>,
get_Category: get_Category::<Identity, Impl, OFFSET>,
NumConnections: NumConnections::<Identity, Impl, OFFSET>,
get_ConnectionInfo: get_ConnectionInfo::<Identity, Impl, OFFSET>,
get_NodeName: get_NodeName::<Identity, Impl, OFFSET>,
NumNodes: NumNodes::<Identity, Impl, OFFSET>,
get_NodeType: get_NodeType::<Identity, Impl, OFFSET>,
CreateNodeInstance: CreateNodeInstance::<Identity, Impl, OFFSET>,
}
}
pub fn matches(iid: &::windows_core::GUID) -> bool {
iid == &<IKsTopologyInfo as ::windows_core::ComInterface>::IID
}
}