#![allow(
non_snake_case,
non_upper_case_globals,
non_camel_case_types,
dead_code,
clippy::all
)]
windows_core::imp::define_interface!(
CATID_OPCDAServer10,
CATID_OPCDAServer10_Vtbl,
0x63d5f430_cfe4_11d1_b2c8_0060083ba1fb
);
windows_core::imp::interface_hierarchy!(CATID_OPCDAServer10, windows_core::IUnknown);
#[repr(C)]
#[doc(hidden)]
pub struct CATID_OPCDAServer10_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
}
pub trait CATID_OPCDAServer10_Impl: windows_core::IUnknownImpl {}
impl CATID_OPCDAServer10_Vtbl {
pub const fn new<Identity: CATID_OPCDAServer10_Impl, const OFFSET: isize>() -> Self {
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<CATID_OPCDAServer10 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for CATID_OPCDAServer10 {}
windows_core::imp::define_interface!(
CATID_OPCDAServer20,
CATID_OPCDAServer20_Vtbl,
0x63d5f432_cfe4_11d1_b2c8_0060083ba1fb
);
windows_core::imp::interface_hierarchy!(CATID_OPCDAServer20, windows_core::IUnknown);
#[repr(C)]
#[doc(hidden)]
pub struct CATID_OPCDAServer20_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
}
pub trait CATID_OPCDAServer20_Impl: windows_core::IUnknownImpl {}
impl CATID_OPCDAServer20_Vtbl {
pub const fn new<Identity: CATID_OPCDAServer20_Impl, const OFFSET: isize>() -> Self {
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<CATID_OPCDAServer20 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for CATID_OPCDAServer20 {}
windows_core::imp::define_interface!(
CATID_OPCDAServer30,
CATID_OPCDAServer30_Vtbl,
0xcc603642_66d7_48f1_b69a_b625e73652d7
);
windows_core::imp::interface_hierarchy!(CATID_OPCDAServer30, windows_core::IUnknown);
#[repr(C)]
#[doc(hidden)]
pub struct CATID_OPCDAServer30_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
}
pub trait CATID_OPCDAServer30_Impl: windows_core::IUnknownImpl {}
impl CATID_OPCDAServer30_Vtbl {
pub const fn new<Identity: CATID_OPCDAServer30_Impl, const OFFSET: isize>() -> Self {
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<CATID_OPCDAServer30 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for CATID_OPCDAServer30 {}
windows_core::imp::define_interface!(
CATID_XMLDAServer10,
CATID_XMLDAServer10_Vtbl,
0x3098eda4_a006_48b2_a27f_247453959408
);
windows_core::imp::interface_hierarchy!(CATID_XMLDAServer10, windows_core::IUnknown);
#[repr(C)]
#[doc(hidden)]
pub struct CATID_XMLDAServer10_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
}
pub trait CATID_XMLDAServer10_Impl: windows_core::IUnknownImpl {}
impl CATID_XMLDAServer10_Vtbl {
pub const fn new<Identity: CATID_XMLDAServer10_Impl, const OFFSET: isize>() -> Self {
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<CATID_XMLDAServer10 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for CATID_XMLDAServer10 {}
windows_core::imp::define_interface!(
IEnumOPCItemAttributes,
IEnumOPCItemAttributes_Vtbl,
0x39c13a55_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IEnumOPCItemAttributes, windows_core::IUnknown);
impl IEnumOPCItemAttributes {
pub unsafe fn Next(
&self,
celt: u32,
ppitemarray: *mut *mut tagOPCITEMATTRIBUTES,
pceltfetched: *mut u32,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Next)(
windows_core::Interface::as_raw(self),
celt,
ppitemarray as _,
pceltfetched as _,
)
.ok()
}
}
pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Skip)(
windows_core::Interface::as_raw(self),
celt,
)
.ok()
}
}
pub unsafe fn Reset(&self) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self))
.ok()
}
}
pub unsafe fn Clone(&self) -> windows_core::Result<IEnumOPCItemAttributes> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).Clone)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumOPCItemAttributes_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub Next: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*mut *mut tagOPCITEMATTRIBUTES,
*mut u32,
) -> windows_core::HRESULT,
pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
pub Clone: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IEnumOPCItemAttributes_Impl: windows_core::IUnknownImpl {
fn Next(
&self,
celt: u32,
ppitemarray: *mut *mut tagOPCITEMATTRIBUTES,
pceltfetched: *mut u32,
) -> windows_core::Result<()>;
fn Skip(&self, celt: u32) -> windows_core::Result<()>;
fn Reset(&self) -> windows_core::Result<()>;
fn Clone(&self) -> windows_core::Result<IEnumOPCItemAttributes>;
}
impl IEnumOPCItemAttributes_Vtbl {
pub const fn new<Identity: IEnumOPCItemAttributes_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Next<
Identity: IEnumOPCItemAttributes_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
celt: u32,
ppitemarray: *mut *mut tagOPCITEMATTRIBUTES,
pceltfetched: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IEnumOPCItemAttributes_Impl::Next(
this,
core::mem::transmute_copy(&celt),
core::mem::transmute_copy(&ppitemarray),
core::mem::transmute_copy(&pceltfetched),
)
.into()
}
}
unsafe extern "system" fn Skip<
Identity: IEnumOPCItemAttributes_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
celt: u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IEnumOPCItemAttributes_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
}
}
unsafe extern "system" fn Reset<
Identity: IEnumOPCItemAttributes_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IEnumOPCItemAttributes_Impl::Reset(this).into()
}
}
unsafe extern "system" fn Clone<
Identity: IEnumOPCItemAttributes_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
ppenumitemattributes: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IEnumOPCItemAttributes_Impl::Clone(this) {
Ok(ok__) => {
ppenumitemattributes.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Next: Next::<Identity, OFFSET>,
Skip: Skip::<Identity, OFFSET>,
Reset: Reset::<Identity, OFFSET>,
Clone: Clone::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IEnumOPCItemAttributes as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IEnumOPCItemAttributes {}
windows_core::imp::define_interface!(
IOPCAsyncIO,
IOPCAsyncIO_Vtbl,
0x39c13a53_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCAsyncIO, windows_core::IUnknown);
impl IOPCAsyncIO {
pub unsafe fn Read(
&self,
dwconnection: u32,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Read)(
windows_core::Interface::as_raw(self),
dwconnection,
dwsource,
dwcount,
phserver,
ptransactionid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn Write(
&self,
dwconnection: u32,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Write)(
windows_core::Interface::as_raw(self),
dwconnection,
dwcount,
phserver,
core::mem::transmute(pitemvalues),
ptransactionid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn Refresh(
&self,
dwconnection: u32,
dwsource: tagOPCDATASOURCE,
) -> windows_core::Result<u32> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).Refresh)(
windows_core::Interface::as_raw(self),
dwconnection,
dwsource,
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn Cancel(&self, dwtransactionid: u32) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Cancel)(
windows_core::Interface::as_raw(self),
dwtransactionid,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCAsyncIO_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub Read: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
tagOPCDATASOURCE,
u32,
*const u32,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub Write: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
u32,
*const u32,
*const windows::Win32::System::Variant::VARIANT,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub Refresh: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
tagOPCDATASOURCE,
*mut u32,
) -> windows_core::HRESULT,
pub Cancel: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IOPCAsyncIO_Impl: windows_core::IUnknownImpl {
fn Read(
&self,
dwconnection: u32,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn Write(
&self,
dwconnection: u32,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn Refresh(&self, dwconnection: u32, dwsource: tagOPCDATASOURCE) -> windows_core::Result<u32>;
fn Cancel(&self, dwtransactionid: u32) -> windows_core::Result<()>;
}
impl IOPCAsyncIO_Vtbl {
pub const fn new<Identity: IOPCAsyncIO_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Read<Identity: IOPCAsyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwconnection: u32,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO_Impl::Read(
this,
core::mem::transmute_copy(&dwconnection),
core::mem::transmute_copy(&dwsource),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&ptransactionid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn Write<Identity: IOPCAsyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwconnection: u32,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
ptransactionid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO_Impl::Write(
this,
core::mem::transmute_copy(&dwconnection),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pitemvalues),
core::mem::transmute_copy(&ptransactionid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn Refresh<Identity: IOPCAsyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwconnection: u32,
dwsource: tagOPCDATASOURCE,
ptransactionid: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCAsyncIO_Impl::Refresh(
this,
core::mem::transmute_copy(&dwconnection),
core::mem::transmute_copy(&dwsource),
) {
Ok(ok__) => {
ptransactionid.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn Cancel<Identity: IOPCAsyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwtransactionid: u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO_Impl::Cancel(this, core::mem::transmute_copy(&dwtransactionid)).into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Read: Read::<Identity, OFFSET>,
Write: Write::<Identity, OFFSET>,
Refresh: Refresh::<Identity, OFFSET>,
Cancel: Cancel::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCAsyncIO as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCAsyncIO {}
windows_core::imp::define_interface!(
IOPCAsyncIO2,
IOPCAsyncIO2_Vtbl,
0x39c13a71_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCAsyncIO2, windows_core::IUnknown);
impl IOPCAsyncIO2 {
pub unsafe fn Read(
&self,
dwcount: u32,
phserver: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Read)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
dwtransactionid,
pdwcancelid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn Write(
&self,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Write)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
core::mem::transmute(pitemvalues),
dwtransactionid,
pdwcancelid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn Refresh2(
&self,
dwsource: tagOPCDATASOURCE,
dwtransactionid: u32,
) -> windows_core::Result<u32> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).Refresh2)(
windows_core::Interface::as_raw(self),
dwsource,
dwtransactionid,
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn Cancel2(&self, dwcancelid: u32) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Cancel2)(
windows_core::Interface::as_raw(self),
dwcancelid,
)
.ok()
}
}
pub unsafe fn SetEnable(&self, benable: bool) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetEnable)(
windows_core::Interface::as_raw(self),
benable.into(),
)
.ok()
}
}
pub unsafe fn GetEnable(&self) -> windows_core::Result<windows_core::BOOL> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetEnable)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.map(|| result__)
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCAsyncIO2_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub Read: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
u32,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub Write: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const windows::Win32::System::Variant::VARIANT,
u32,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub Refresh2: unsafe extern "system" fn(
*mut core::ffi::c_void,
tagOPCDATASOURCE,
u32,
*mut u32,
) -> windows_core::HRESULT,
pub Cancel2: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
pub SetEnable: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::BOOL,
) -> windows_core::HRESULT,
pub GetEnable: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut windows_core::BOOL,
) -> windows_core::HRESULT,
}
pub trait IOPCAsyncIO2_Impl: windows_core::IUnknownImpl {
fn Read(
&self,
dwcount: u32,
phserver: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn Write(
&self,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn Refresh2(
&self,
dwsource: tagOPCDATASOURCE,
dwtransactionid: u32,
) -> windows_core::Result<u32>;
fn Cancel2(&self, dwcancelid: u32) -> windows_core::Result<()>;
fn SetEnable(&self, benable: windows_core::BOOL) -> windows_core::Result<()>;
fn GetEnable(&self) -> windows_core::Result<windows_core::BOOL>;
}
impl IOPCAsyncIO2_Vtbl {
pub const fn new<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Read<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO2_Impl::Read(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&dwtransactionid),
core::mem::transmute_copy(&pdwcancelid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn Write<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO2_Impl::Write(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pitemvalues),
core::mem::transmute_copy(&dwtransactionid),
core::mem::transmute_copy(&pdwcancelid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn Refresh2<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwsource: tagOPCDATASOURCE,
dwtransactionid: u32,
pdwcancelid: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCAsyncIO2_Impl::Refresh2(
this,
core::mem::transmute_copy(&dwsource),
core::mem::transmute_copy(&dwtransactionid),
) {
Ok(ok__) => {
pdwcancelid.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn Cancel2<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcancelid: u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO2_Impl::Cancel2(this, core::mem::transmute_copy(&dwcancelid)).into()
}
}
unsafe extern "system" fn SetEnable<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
benable: windows_core::BOOL,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO2_Impl::SetEnable(this, core::mem::transmute_copy(&benable)).into()
}
}
unsafe extern "system" fn GetEnable<Identity: IOPCAsyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
pbenable: *mut windows_core::BOOL,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCAsyncIO2_Impl::GetEnable(this) {
Ok(ok__) => {
pbenable.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Read: Read::<Identity, OFFSET>,
Write: Write::<Identity, OFFSET>,
Refresh2: Refresh2::<Identity, OFFSET>,
Cancel2: Cancel2::<Identity, OFFSET>,
SetEnable: SetEnable::<Identity, OFFSET>,
GetEnable: GetEnable::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCAsyncIO2 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCAsyncIO2 {}
windows_core::imp::define_interface!(
IOPCAsyncIO3,
IOPCAsyncIO3_Vtbl,
0x0967b97b_36ef_423e_b6f8_6bff1e40d39d
);
impl core::ops::Deref for IOPCAsyncIO3 {
type Target = IOPCAsyncIO2;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IOPCAsyncIO3, windows_core::IUnknown, IOPCAsyncIO2);
impl IOPCAsyncIO3 {
pub unsafe fn ReadMaxAge(
&self,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).ReadMaxAge)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pdwmaxage,
dwtransactionid,
pdwcancelid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn WriteVQT(
&self,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).WriteVQT)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
core::mem::transmute(pitemvqt),
dwtransactionid,
pdwcancelid as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn RefreshMaxAge(
&self,
dwmaxage: u32,
dwtransactionid: u32,
) -> windows_core::Result<u32> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).RefreshMaxAge)(
windows_core::Interface::as_raw(self),
dwmaxage,
dwtransactionid,
&mut result__,
)
.map(|| result__)
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCAsyncIO3_Vtbl {
pub base__: IOPCAsyncIO2_Vtbl,
pub ReadMaxAge: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const u32,
u32,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub WriteVQT: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const tagOPCITEMVQT,
u32,
*mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub RefreshMaxAge: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
u32,
*mut u32,
) -> windows_core::HRESULT,
}
pub trait IOPCAsyncIO3_Impl: IOPCAsyncIO2_Impl {
fn ReadMaxAge(
&self,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn WriteVQT(
&self,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn RefreshMaxAge(&self, dwmaxage: u32, dwtransactionid: u32) -> windows_core::Result<u32>;
}
impl IOPCAsyncIO3_Vtbl {
pub const fn new<Identity: IOPCAsyncIO3_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn ReadMaxAge<Identity: IOPCAsyncIO3_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO3_Impl::ReadMaxAge(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pdwmaxage),
core::mem::transmute_copy(&dwtransactionid),
core::mem::transmute_copy(&pdwcancelid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn WriteVQT<Identity: IOPCAsyncIO3_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
dwtransactionid: u32,
pdwcancelid: *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCAsyncIO3_Impl::WriteVQT(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pitemvqt),
core::mem::transmute_copy(&dwtransactionid),
core::mem::transmute_copy(&pdwcancelid),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn RefreshMaxAge<
Identity: IOPCAsyncIO3_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwmaxage: u32,
dwtransactionid: u32,
pdwcancelid: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCAsyncIO3_Impl::RefreshMaxAge(
this,
core::mem::transmute_copy(&dwmaxage),
core::mem::transmute_copy(&dwtransactionid),
) {
Ok(ok__) => {
pdwcancelid.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: IOPCAsyncIO2_Vtbl::new::<Identity, OFFSET>(),
ReadMaxAge: ReadMaxAge::<Identity, OFFSET>,
WriteVQT: WriteVQT::<Identity, OFFSET>,
RefreshMaxAge: RefreshMaxAge::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCAsyncIO3 as windows_core::Interface>::IID
|| iid == &<IOPCAsyncIO2 as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCAsyncIO3 {}
windows_core::imp::define_interface!(
IOPCBrowse,
IOPCBrowse_Vtbl,
0x39227004_a18f_4b57_8b0a_5235670f4468
);
windows_core::imp::interface_hierarchy!(IOPCBrowse, windows_core::IUnknown);
impl IOPCBrowse {
pub unsafe fn GetProperties(
&self,
dwitemcount: u32,
pszitemids: *const windows_core::PCWSTR,
breturnpropertyvalues: bool,
pdwpropertyids: &[u32],
ppitemproperties: *mut *mut tagOPCITEMPROPERTIES,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).GetProperties)(
windows_core::Interface::as_raw(self),
dwitemcount,
pszitemids,
breturnpropertyvalues.into(),
pdwpropertyids.len().try_into().unwrap(),
core::mem::transmute(pdwpropertyids.as_ptr()),
ppitemproperties as _,
)
.ok()
}
}
pub unsafe fn Browse<P0, P4, P5>(
&self,
szitemid: P0,
pszcontinuationpoint: *mut windows_core::PWSTR,
dwmaxelementsreturned: u32,
dwbrowsefilter: tagOPCBROWSEFILTER,
szelementnamefilter: P4,
szvendorfilter: P5,
breturnallproperties: bool,
breturnpropertyvalues: bool,
pdwpropertyids: &[u32],
pbmoreelements: *mut windows_core::BOOL,
pdwcount: *mut u32,
ppbrowseelements: *mut *mut tagOPCBROWSEELEMENT,
) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
P4: windows_core::Param<windows_core::PCWSTR>,
P5: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).Browse)(
windows_core::Interface::as_raw(self),
szitemid.param().abi(),
pszcontinuationpoint as _,
dwmaxelementsreturned,
dwbrowsefilter,
szelementnamefilter.param().abi(),
szvendorfilter.param().abi(),
breturnallproperties.into(),
breturnpropertyvalues.into(),
pdwpropertyids.len().try_into().unwrap(),
core::mem::transmute(pdwpropertyids.as_ptr()),
pbmoreelements as _,
pdwcount as _,
ppbrowseelements as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCBrowse_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub GetProperties: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const windows_core::PCWSTR,
windows_core::BOOL,
u32,
*const u32,
*mut *mut tagOPCITEMPROPERTIES,
) -> windows_core::HRESULT,
pub Browse: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*mut windows_core::PWSTR,
u32,
tagOPCBROWSEFILTER,
windows_core::PCWSTR,
windows_core::PCWSTR,
windows_core::BOOL,
windows_core::BOOL,
u32,
*const u32,
*mut windows_core::BOOL,
*mut u32,
*mut *mut tagOPCBROWSEELEMENT,
) -> windows_core::HRESULT,
}
pub trait IOPCBrowse_Impl: windows_core::IUnknownImpl {
fn GetProperties(
&self,
dwitemcount: u32,
pszitemids: *const windows_core::PCWSTR,
breturnpropertyvalues: windows_core::BOOL,
dwpropertycount: u32,
pdwpropertyids: *const u32,
ppitemproperties: *mut *mut tagOPCITEMPROPERTIES,
) -> windows_core::Result<()>;
fn Browse(
&self,
szitemid: &windows_core::PCWSTR,
pszcontinuationpoint: *mut windows_core::PWSTR,
dwmaxelementsreturned: u32,
dwbrowsefilter: tagOPCBROWSEFILTER,
szelementnamefilter: &windows_core::PCWSTR,
szvendorfilter: &windows_core::PCWSTR,
breturnallproperties: windows_core::BOOL,
breturnpropertyvalues: windows_core::BOOL,
dwpropertycount: u32,
pdwpropertyids: *const u32,
pbmoreelements: *mut windows_core::BOOL,
pdwcount: *mut u32,
ppbrowseelements: *mut *mut tagOPCBROWSEELEMENT,
) -> windows_core::Result<()>;
}
impl IOPCBrowse_Vtbl {
pub const fn new<Identity: IOPCBrowse_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetProperties<Identity: IOPCBrowse_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwitemcount: u32,
pszitemids: *const windows_core::PCWSTR,
breturnpropertyvalues: windows_core::BOOL,
dwpropertycount: u32,
pdwpropertyids: *const u32,
ppitemproperties: *mut *mut tagOPCITEMPROPERTIES,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCBrowse_Impl::GetProperties(
this,
core::mem::transmute_copy(&dwitemcount),
core::mem::transmute_copy(&pszitemids),
core::mem::transmute_copy(&breturnpropertyvalues),
core::mem::transmute_copy(&dwpropertycount),
core::mem::transmute_copy(&pdwpropertyids),
core::mem::transmute_copy(&ppitemproperties),
)
.into()
}
}
unsafe extern "system" fn Browse<Identity: IOPCBrowse_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
szitemid: windows_core::PCWSTR,
pszcontinuationpoint: *mut windows_core::PWSTR,
dwmaxelementsreturned: u32,
dwbrowsefilter: tagOPCBROWSEFILTER,
szelementnamefilter: windows_core::PCWSTR,
szvendorfilter: windows_core::PCWSTR,
breturnallproperties: windows_core::BOOL,
breturnpropertyvalues: windows_core::BOOL,
dwpropertycount: u32,
pdwpropertyids: *const u32,
pbmoreelements: *mut windows_core::BOOL,
pdwcount: *mut u32,
ppbrowseelements: *mut *mut tagOPCBROWSEELEMENT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCBrowse_Impl::Browse(
this,
core::mem::transmute(&szitemid),
core::mem::transmute_copy(&pszcontinuationpoint),
core::mem::transmute_copy(&dwmaxelementsreturned),
core::mem::transmute_copy(&dwbrowsefilter),
core::mem::transmute(&szelementnamefilter),
core::mem::transmute(&szvendorfilter),
core::mem::transmute_copy(&breturnallproperties),
core::mem::transmute_copy(&breturnpropertyvalues),
core::mem::transmute_copy(&dwpropertycount),
core::mem::transmute_copy(&pdwpropertyids),
core::mem::transmute_copy(&pbmoreelements),
core::mem::transmute_copy(&pdwcount),
core::mem::transmute_copy(&ppbrowseelements),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetProperties: GetProperties::<Identity, OFFSET>,
Browse: Browse::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCBrowse as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCBrowse {}
windows_core::imp::define_interface!(
IOPCBrowseServerAddressSpace,
IOPCBrowseServerAddressSpace_Vtbl,
0x39c13a4f_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCBrowseServerAddressSpace, windows_core::IUnknown);
impl IOPCBrowseServerAddressSpace {
pub unsafe fn QueryOrganization(&self) -> windows_core::Result<tagOPCNAMESPACETYPE> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).QueryOrganization)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn ChangeBrowsePosition<P1>(
&self,
dwbrowsedirection: tagOPCBROWSEDIRECTION,
szstring: P1,
) -> windows_core::Result<()>
where
P1: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).ChangeBrowsePosition)(
windows_core::Interface::as_raw(self),
dwbrowsedirection,
szstring.param().abi(),
)
.ok()
}
}
pub unsafe fn BrowseOPCItemIDs<P1>(
&self,
dwbrowsefiltertype: tagOPCBROWSETYPE,
szfiltercriteria: P1,
vtdatatypefilter: u16,
dwaccessrightsfilter: u32,
) -> windows_core::Result<windows::Win32::System::Com::IEnumString>
where
P1: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).BrowseOPCItemIDs)(
windows_core::Interface::as_raw(self),
dwbrowsefiltertype,
szfiltercriteria.param().abi(),
vtdatatypefilter,
dwaccessrightsfilter,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
pub unsafe fn GetItemID<P0>(
&self,
szitemdataid: P0,
) -> windows_core::Result<windows_core::PWSTR>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetItemID)(
windows_core::Interface::as_raw(self),
szitemdataid.param().abi(),
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn BrowseAccessPaths<P0>(
&self,
szitemid: P0,
) -> windows_core::Result<windows::Win32::System::Com::IEnumString>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).BrowseAccessPaths)(
windows_core::Interface::as_raw(self),
szitemid.param().abi(),
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCBrowseServerAddressSpace_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub QueryOrganization: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut tagOPCNAMESPACETYPE,
) -> windows_core::HRESULT,
pub ChangeBrowsePosition: unsafe extern "system" fn(
*mut core::ffi::c_void,
tagOPCBROWSEDIRECTION,
windows_core::PCWSTR,
) -> windows_core::HRESULT,
pub BrowseOPCItemIDs: unsafe extern "system" fn(
*mut core::ffi::c_void,
tagOPCBROWSETYPE,
windows_core::PCWSTR,
u16,
u32,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
pub GetItemID: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*mut windows_core::PWSTR,
) -> windows_core::HRESULT,
pub BrowseAccessPaths: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IOPCBrowseServerAddressSpace_Impl: windows_core::IUnknownImpl {
fn QueryOrganization(&self) -> windows_core::Result<tagOPCNAMESPACETYPE>;
fn ChangeBrowsePosition(
&self,
dwbrowsedirection: tagOPCBROWSEDIRECTION,
szstring: &windows_core::PCWSTR,
) -> windows_core::Result<()>;
fn BrowseOPCItemIDs(
&self,
dwbrowsefiltertype: tagOPCBROWSETYPE,
szfiltercriteria: &windows_core::PCWSTR,
vtdatatypefilter: u16,
dwaccessrightsfilter: u32,
) -> windows_core::Result<windows::Win32::System::Com::IEnumString>;
fn GetItemID(
&self,
szitemdataid: &windows_core::PCWSTR,
) -> windows_core::Result<windows_core::PWSTR>;
fn BrowseAccessPaths(
&self,
szitemid: &windows_core::PCWSTR,
) -> windows_core::Result<windows::Win32::System::Com::IEnumString>;
}
impl IOPCBrowseServerAddressSpace_Vtbl {
pub const fn new<Identity: IOPCBrowseServerAddressSpace_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn QueryOrganization<
Identity: IOPCBrowseServerAddressSpace_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
pnamespacetype: *mut tagOPCNAMESPACETYPE,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCBrowseServerAddressSpace_Impl::QueryOrganization(this) {
Ok(ok__) => {
pnamespacetype.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn ChangeBrowsePosition<
Identity: IOPCBrowseServerAddressSpace_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwbrowsedirection: tagOPCBROWSEDIRECTION,
szstring: windows_core::PCWSTR,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCBrowseServerAddressSpace_Impl::ChangeBrowsePosition(
this,
core::mem::transmute_copy(&dwbrowsedirection),
core::mem::transmute(&szstring),
)
.into()
}
}
unsafe extern "system" fn BrowseOPCItemIDs<
Identity: IOPCBrowseServerAddressSpace_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwbrowsefiltertype: tagOPCBROWSETYPE,
szfiltercriteria: windows_core::PCWSTR,
vtdatatypefilter: u16,
dwaccessrightsfilter: u32,
ppienumstring: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCBrowseServerAddressSpace_Impl::BrowseOPCItemIDs(
this,
core::mem::transmute_copy(&dwbrowsefiltertype),
core::mem::transmute(&szfiltercriteria),
core::mem::transmute_copy(&vtdatatypefilter),
core::mem::transmute_copy(&dwaccessrightsfilter),
) {
Ok(ok__) => {
ppienumstring.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetItemID<
Identity: IOPCBrowseServerAddressSpace_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szitemdataid: windows_core::PCWSTR,
szitemid: *mut windows_core::PWSTR,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCBrowseServerAddressSpace_Impl::GetItemID(
this,
core::mem::transmute(&szitemdataid),
) {
Ok(ok__) => {
szitemid.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn BrowseAccessPaths<
Identity: IOPCBrowseServerAddressSpace_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szitemid: windows_core::PCWSTR,
ppienumstring: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCBrowseServerAddressSpace_Impl::BrowseAccessPaths(
this,
core::mem::transmute(&szitemid),
) {
Ok(ok__) => {
ppienumstring.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
QueryOrganization: QueryOrganization::<Identity, OFFSET>,
ChangeBrowsePosition: ChangeBrowsePosition::<Identity, OFFSET>,
BrowseOPCItemIDs: BrowseOPCItemIDs::<Identity, OFFSET>,
GetItemID: GetItemID::<Identity, OFFSET>,
BrowseAccessPaths: BrowseAccessPaths::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCBrowseServerAddressSpace as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCBrowseServerAddressSpace {}
windows_core::imp::define_interface!(
IOPCDataCallback,
IOPCDataCallback_Vtbl,
0x39c13a70_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCDataCallback, windows_core::IUnknown);
impl IOPCDataCallback {
pub unsafe fn OnDataChange(
&self,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).OnDataChange)(
windows_core::Interface::as_raw(self),
dwtransid,
hgroup,
hrmasterquality,
hrmastererror,
dwcount,
phclientitems,
core::mem::transmute(pvvalues),
pwqualities,
pfttimestamps,
perrors,
)
.ok()
}
}
pub unsafe fn OnReadComplete(
&self,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).OnReadComplete)(
windows_core::Interface::as_raw(self),
dwtransid,
hgroup,
hrmasterquality,
hrmastererror,
dwcount,
phclientitems,
core::mem::transmute(pvvalues),
pwqualities,
pfttimestamps,
perrors,
)
.ok()
}
}
pub unsafe fn OnWriteComplete(
&self,
dwtransid: u32,
hgroup: u32,
hrmastererr: windows_core::HRESULT,
dwcount: u32,
pclienthandles: *const u32,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).OnWriteComplete)(
windows_core::Interface::as_raw(self),
dwtransid,
hgroup,
hrmastererr,
dwcount,
pclienthandles,
perrors,
)
.ok()
}
}
pub unsafe fn OnCancelComplete(&self, dwtransid: u32, hgroup: u32) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).OnCancelComplete)(
windows_core::Interface::as_raw(self),
dwtransid,
hgroup,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCDataCallback_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub OnDataChange: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
u32,
windows_core::HRESULT,
windows_core::HRESULT,
u32,
*const u32,
*const windows::Win32::System::Variant::VARIANT,
*const u16,
*const windows::Win32::Foundation::FILETIME,
*const windows_core::HRESULT,
) -> windows_core::HRESULT,
pub OnReadComplete: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
u32,
windows_core::HRESULT,
windows_core::HRESULT,
u32,
*const u32,
*const windows::Win32::System::Variant::VARIANT,
*const u16,
*const windows::Win32::Foundation::FILETIME,
*const windows_core::HRESULT,
) -> windows_core::HRESULT,
pub OnWriteComplete: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
u32,
windows_core::HRESULT,
u32,
*const u32,
*const windows_core::HRESULT,
) -> windows_core::HRESULT,
pub OnCancelComplete:
unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
}
pub trait IOPCDataCallback_Impl: windows_core::IUnknownImpl {
fn OnDataChange(
&self,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()>;
fn OnReadComplete(
&self,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()>;
fn OnWriteComplete(
&self,
dwtransid: u32,
hgroup: u32,
hrmastererr: windows_core::HRESULT,
dwcount: u32,
pclienthandles: *const u32,
perrors: *const windows_core::HRESULT,
) -> windows_core::Result<()>;
fn OnCancelComplete(&self, dwtransid: u32, hgroup: u32) -> windows_core::Result<()>;
}
impl IOPCDataCallback_Vtbl {
pub const fn new<Identity: IOPCDataCallback_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn OnDataChange<
Identity: IOPCDataCallback_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCDataCallback_Impl::OnDataChange(
this,
core::mem::transmute_copy(&dwtransid),
core::mem::transmute_copy(&hgroup),
core::mem::transmute_copy(&hrmasterquality),
core::mem::transmute_copy(&hrmastererror),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phclientitems),
core::mem::transmute_copy(&pvvalues),
core::mem::transmute_copy(&pwqualities),
core::mem::transmute_copy(&pfttimestamps),
core::mem::transmute_copy(&perrors),
)
.into()
}
}
unsafe extern "system" fn OnReadComplete<
Identity: IOPCDataCallback_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwtransid: u32,
hgroup: u32,
hrmasterquality: windows_core::HRESULT,
hrmastererror: windows_core::HRESULT,
dwcount: u32,
phclientitems: *const u32,
pvvalues: *const windows::Win32::System::Variant::VARIANT,
pwqualities: *const u16,
pfttimestamps: *const windows::Win32::Foundation::FILETIME,
perrors: *const windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCDataCallback_Impl::OnReadComplete(
this,
core::mem::transmute_copy(&dwtransid),
core::mem::transmute_copy(&hgroup),
core::mem::transmute_copy(&hrmasterquality),
core::mem::transmute_copy(&hrmastererror),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phclientitems),
core::mem::transmute_copy(&pvvalues),
core::mem::transmute_copy(&pwqualities),
core::mem::transmute_copy(&pfttimestamps),
core::mem::transmute_copy(&perrors),
)
.into()
}
}
unsafe extern "system" fn OnWriteComplete<
Identity: IOPCDataCallback_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwtransid: u32,
hgroup: u32,
hrmastererr: windows_core::HRESULT,
dwcount: u32,
pclienthandles: *const u32,
perrors: *const windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCDataCallback_Impl::OnWriteComplete(
this,
core::mem::transmute_copy(&dwtransid),
core::mem::transmute_copy(&hgroup),
core::mem::transmute_copy(&hrmastererr),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pclienthandles),
core::mem::transmute_copy(&perrors),
)
.into()
}
}
unsafe extern "system" fn OnCancelComplete<
Identity: IOPCDataCallback_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwtransid: u32,
hgroup: u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCDataCallback_Impl::OnCancelComplete(
this,
core::mem::transmute_copy(&dwtransid),
core::mem::transmute_copy(&hgroup),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
OnDataChange: OnDataChange::<Identity, OFFSET>,
OnReadComplete: OnReadComplete::<Identity, OFFSET>,
OnWriteComplete: OnWriteComplete::<Identity, OFFSET>,
OnCancelComplete: OnCancelComplete::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCDataCallback as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCDataCallback {}
windows_core::imp::define_interface!(
IOPCGroupStateMgt,
IOPCGroupStateMgt_Vtbl,
0x39c13a50_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCGroupStateMgt, windows_core::IUnknown);
impl IOPCGroupStateMgt {
pub unsafe fn GetState(
&self,
pupdaterate: *mut u32,
pactive: *mut windows_core::BOOL,
ppname: *mut windows_core::PWSTR,
ptimebias: *mut i32,
ppercentdeadband: *mut f32,
plcid: *mut u32,
phclientgroup: *mut u32,
phservergroup: *mut u32,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).GetState)(
windows_core::Interface::as_raw(self),
pupdaterate as _,
pactive as _,
ppname as _,
ptimebias as _,
ppercentdeadband as _,
plcid as _,
phclientgroup as _,
phservergroup as _,
)
.ok()
}
}
pub unsafe fn SetState(
&self,
prequestedupdaterate: *const u32,
previsedupdaterate: *mut u32,
pactive: *const windows_core::BOOL,
ptimebias: *const i32,
ppercentdeadband: *const f32,
plcid: *const u32,
phclientgroup: *const u32,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetState)(
windows_core::Interface::as_raw(self),
prequestedupdaterate,
previsedupdaterate as _,
pactive,
ptimebias,
ppercentdeadband,
plcid,
phclientgroup,
)
.ok()
}
}
pub unsafe fn SetName<P0>(&self, szname: P0) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).SetName)(
windows_core::Interface::as_raw(self),
szname.param().abi(),
)
.ok()
}
}
pub unsafe fn CloneGroup<P0>(
&self,
szname: P0,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).CloneGroup)(
windows_core::Interface::as_raw(self),
szname.param().abi(),
riid,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCGroupStateMgt_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub GetState: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut u32,
*mut windows_core::BOOL,
*mut windows_core::PWSTR,
*mut i32,
*mut f32,
*mut u32,
*mut u32,
*mut u32,
) -> windows_core::HRESULT,
pub SetState: unsafe extern "system" fn(
*mut core::ffi::c_void,
*const u32,
*mut u32,
*const windows_core::BOOL,
*const i32,
*const f32,
*const u32,
*const u32,
) -> windows_core::HRESULT,
pub SetName: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
) -> windows_core::HRESULT,
pub CloneGroup: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IOPCGroupStateMgt_Impl: windows_core::IUnknownImpl {
fn GetState(
&self,
pupdaterate: *mut u32,
pactive: *mut windows_core::BOOL,
ppname: *mut windows_core::PWSTR,
ptimebias: *mut i32,
ppercentdeadband: *mut f32,
plcid: *mut u32,
phclientgroup: *mut u32,
phservergroup: *mut u32,
) -> windows_core::Result<()>;
fn SetState(
&self,
prequestedupdaterate: *const u32,
previsedupdaterate: *mut u32,
pactive: *const windows_core::BOOL,
ptimebias: *const i32,
ppercentdeadband: *const f32,
plcid: *const u32,
phclientgroup: *const u32,
) -> windows_core::Result<()>;
fn SetName(&self, szname: &windows_core::PCWSTR) -> windows_core::Result<()>;
fn CloneGroup(
&self,
szname: &windows_core::PCWSTR,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>;
}
impl IOPCGroupStateMgt_Vtbl {
pub const fn new<Identity: IOPCGroupStateMgt_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetState<
Identity: IOPCGroupStateMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
pupdaterate: *mut u32,
pactive: *mut windows_core::BOOL,
ppname: *mut windows_core::PWSTR,
ptimebias: *mut i32,
ppercentdeadband: *mut f32,
plcid: *mut u32,
phclientgroup: *mut u32,
phservergroup: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCGroupStateMgt_Impl::GetState(
this,
core::mem::transmute_copy(&pupdaterate),
core::mem::transmute_copy(&pactive),
core::mem::transmute_copy(&ppname),
core::mem::transmute_copy(&ptimebias),
core::mem::transmute_copy(&ppercentdeadband),
core::mem::transmute_copy(&plcid),
core::mem::transmute_copy(&phclientgroup),
core::mem::transmute_copy(&phservergroup),
)
.into()
}
}
unsafe extern "system" fn SetState<
Identity: IOPCGroupStateMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
prequestedupdaterate: *const u32,
previsedupdaterate: *mut u32,
pactive: *const windows_core::BOOL,
ptimebias: *const i32,
ppercentdeadband: *const f32,
plcid: *const u32,
phclientgroup: *const u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCGroupStateMgt_Impl::SetState(
this,
core::mem::transmute_copy(&prequestedupdaterate),
core::mem::transmute_copy(&previsedupdaterate),
core::mem::transmute_copy(&pactive),
core::mem::transmute_copy(&ptimebias),
core::mem::transmute_copy(&ppercentdeadband),
core::mem::transmute_copy(&plcid),
core::mem::transmute_copy(&phclientgroup),
)
.into()
}
}
unsafe extern "system" fn SetName<Identity: IOPCGroupStateMgt_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
szname: windows_core::PCWSTR,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCGroupStateMgt_Impl::SetName(this, core::mem::transmute(&szname)).into()
}
}
unsafe extern "system" fn CloneGroup<
Identity: IOPCGroupStateMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szname: windows_core::PCWSTR,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCGroupStateMgt_Impl::CloneGroup(
this,
core::mem::transmute(&szname),
core::mem::transmute_copy(&riid),
) {
Ok(ok__) => {
ppunk.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetState: GetState::<Identity, OFFSET>,
SetState: SetState::<Identity, OFFSET>,
SetName: SetName::<Identity, OFFSET>,
CloneGroup: CloneGroup::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCGroupStateMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCGroupStateMgt {}
windows_core::imp::define_interface!(
IOPCGroupStateMgt2,
IOPCGroupStateMgt2_Vtbl,
0x8e368666_d72e_4f78_87ed_647611c61c9f
);
impl core::ops::Deref for IOPCGroupStateMgt2 {
type Target = IOPCGroupStateMgt;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(
IOPCGroupStateMgt2,
windows_core::IUnknown,
IOPCGroupStateMgt
);
impl IOPCGroupStateMgt2 {
pub unsafe fn SetKeepAlive(&self, dwkeepalivetime: u32) -> windows_core::Result<u32> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).SetKeepAlive)(
windows_core::Interface::as_raw(self),
dwkeepalivetime,
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn GetKeepAlive(&self) -> windows_core::Result<u32> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetKeepAlive)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.map(|| result__)
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCGroupStateMgt2_Vtbl {
pub base__: IOPCGroupStateMgt_Vtbl,
pub SetKeepAlive:
unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
pub GetKeepAlive:
unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IOPCGroupStateMgt2_Impl: IOPCGroupStateMgt_Impl {
fn SetKeepAlive(&self, dwkeepalivetime: u32) -> windows_core::Result<u32>;
fn GetKeepAlive(&self) -> windows_core::Result<u32>;
}
impl IOPCGroupStateMgt2_Vtbl {
pub const fn new<Identity: IOPCGroupStateMgt2_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn SetKeepAlive<
Identity: IOPCGroupStateMgt2_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwkeepalivetime: u32,
pdwrevisedkeepalivetime: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCGroupStateMgt2_Impl::SetKeepAlive(
this,
core::mem::transmute_copy(&dwkeepalivetime),
) {
Ok(ok__) => {
pdwrevisedkeepalivetime.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetKeepAlive<
Identity: IOPCGroupStateMgt2_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
pdwkeepalivetime: *mut u32,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCGroupStateMgt2_Impl::GetKeepAlive(this) {
Ok(ok__) => {
pdwkeepalivetime.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: IOPCGroupStateMgt_Vtbl::new::<Identity, OFFSET>(),
SetKeepAlive: SetKeepAlive::<Identity, OFFSET>,
GetKeepAlive: GetKeepAlive::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCGroupStateMgt2 as windows_core::Interface>::IID
|| iid == &<IOPCGroupStateMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCGroupStateMgt2 {}
windows_core::imp::define_interface!(
IOPCItemDeadbandMgt,
IOPCItemDeadbandMgt_Vtbl,
0x5946da93_8b39_4ec8_ab3d_aa73df5bc86f
);
windows_core::imp::interface_hierarchy!(IOPCItemDeadbandMgt, windows_core::IUnknown);
impl IOPCItemDeadbandMgt {
pub unsafe fn SetItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
ppercentdeadband: *const f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetItemDeadband)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
ppercentdeadband,
pperrors as _,
)
.ok()
}
}
pub unsafe fn GetItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
pppercentdeadband: *mut *mut f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).GetItemDeadband)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pppercentdeadband as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn ClearItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).ClearItemDeadband)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCItemDeadbandMgt_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub SetItemDeadband: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const f32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub GetItemDeadband: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut f32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub ClearItemDeadband: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCItemDeadbandMgt_Impl: windows_core::IUnknownImpl {
fn SetItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
ppercentdeadband: *const f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn GetItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
pppercentdeadband: *mut *mut f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn ClearItemDeadband(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCItemDeadbandMgt_Vtbl {
pub const fn new<Identity: IOPCItemDeadbandMgt_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn SetItemDeadband<
Identity: IOPCItemDeadbandMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
ppercentdeadband: *const f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemDeadbandMgt_Impl::SetItemDeadband(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&ppercentdeadband),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn GetItemDeadband<
Identity: IOPCItemDeadbandMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pppercentdeadband: *mut *mut f32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemDeadbandMgt_Impl::GetItemDeadband(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pppercentdeadband),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn ClearItemDeadband<
Identity: IOPCItemDeadbandMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemDeadbandMgt_Impl::ClearItemDeadband(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
SetItemDeadband: SetItemDeadband::<Identity, OFFSET>,
GetItemDeadband: GetItemDeadband::<Identity, OFFSET>,
ClearItemDeadband: ClearItemDeadband::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCItemDeadbandMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCItemDeadbandMgt {}
windows_core::imp::define_interface!(
IOPCItemIO,
IOPCItemIO_Vtbl,
0x85c0b427_2893_4cbc_bd78_e5fc5146f08f
);
windows_core::imp::interface_hierarchy!(IOPCItemIO, windows_core::IUnknown);
impl IOPCItemIO {
pub unsafe fn Read(
&self,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Read)(
windows_core::Interface::as_raw(self),
dwcount,
pszitemids,
pdwmaxage,
ppvvalues as _,
ppwqualities as _,
ppfttimestamps as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn WriteVQT(
&self,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).WriteVQT)(
windows_core::Interface::as_raw(self),
dwcount,
pszitemids,
core::mem::transmute(pitemvqt),
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCItemIO_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub Read: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const windows_core::PCWSTR,
*const u32,
*mut *mut windows::Win32::System::Variant::VARIANT,
*mut *mut u16,
*mut *mut windows::Win32::Foundation::FILETIME,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub WriteVQT: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const windows_core::PCWSTR,
*const tagOPCITEMVQT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCItemIO_Impl: windows_core::IUnknownImpl {
fn Read(
&self,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn WriteVQT(
&self,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCItemIO_Vtbl {
pub const fn new<Identity: IOPCItemIO_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Read<Identity: IOPCItemIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemIO_Impl::Read(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pszitemids),
core::mem::transmute_copy(&pdwmaxage),
core::mem::transmute_copy(&ppvvalues),
core::mem::transmute_copy(&ppwqualities),
core::mem::transmute_copy(&ppfttimestamps),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn WriteVQT<Identity: IOPCItemIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
pszitemids: *const windows_core::PCWSTR,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemIO_Impl::WriteVQT(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pszitemids),
core::mem::transmute_copy(&pitemvqt),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Read: Read::<Identity, OFFSET>,
WriteVQT: WriteVQT::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCItemIO as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCItemIO {}
windows_core::imp::define_interface!(
IOPCItemMgt,
IOPCItemMgt_Vtbl,
0x39c13a54_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCItemMgt, windows_core::IUnknown);
impl IOPCItemMgt {
pub unsafe fn AddItems(
&self,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
ppaddresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).AddItems)(
windows_core::Interface::as_raw(self),
dwcount,
pitemarray,
ppaddresults as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn ValidateItems(
&self,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
bblobupdate: bool,
ppvalidationresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).ValidateItems)(
windows_core::Interface::as_raw(self),
dwcount,
pitemarray,
bblobupdate.into(),
ppvalidationresults as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn RemoveItems(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).RemoveItems)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pperrors as _,
)
.ok()
}
}
pub unsafe fn SetActiveState(
&self,
dwcount: u32,
phserver: *const u32,
bactive: bool,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetActiveState)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
bactive.into(),
pperrors as _,
)
.ok()
}
}
pub unsafe fn SetClientHandles(
&self,
dwcount: u32,
phserver: *const u32,
phclient: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetClientHandles)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
phclient,
pperrors as _,
)
.ok()
}
}
pub unsafe fn SetDatatypes(
&self,
dwcount: u32,
phserver: *const u32,
prequesteddatatypes: *const u16,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetDatatypes)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
prequesteddatatypes,
pperrors as _,
)
.ok()
}
}
pub unsafe fn CreateEnumerator(
&self,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).CreateEnumerator)(
windows_core::Interface::as_raw(self),
riid,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCItemMgt_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub AddItems: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const tagOPCITEMDEF,
*mut *mut tagOPCITEMRESULT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub ValidateItems: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const tagOPCITEMDEF,
windows_core::BOOL,
*mut *mut tagOPCITEMRESULT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub RemoveItems: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub SetActiveState: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
windows_core::BOOL,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub SetClientHandles: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub SetDatatypes: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const u16,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub CreateEnumerator: unsafe extern "system" fn(
*mut core::ffi::c_void,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IOPCItemMgt_Impl: windows_core::IUnknownImpl {
fn AddItems(
&self,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
ppaddresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn ValidateItems(
&self,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
bblobupdate: windows_core::BOOL,
ppvalidationresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn RemoveItems(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn SetActiveState(
&self,
dwcount: u32,
phserver: *const u32,
bactive: windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn SetClientHandles(
&self,
dwcount: u32,
phserver: *const u32,
phclient: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn SetDatatypes(
&self,
dwcount: u32,
phserver: *const u32,
prequesteddatatypes: *const u16,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn CreateEnumerator(
&self,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>;
}
impl IOPCItemMgt_Vtbl {
pub const fn new<Identity: IOPCItemMgt_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn AddItems<Identity: IOPCItemMgt_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
ppaddresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::AddItems(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pitemarray),
core::mem::transmute_copy(&ppaddresults),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn ValidateItems<Identity: IOPCItemMgt_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
pitemarray: *const tagOPCITEMDEF,
bblobupdate: windows_core::BOOL,
ppvalidationresults: *mut *mut tagOPCITEMRESULT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::ValidateItems(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pitemarray),
core::mem::transmute_copy(&bblobupdate),
core::mem::transmute_copy(&ppvalidationresults),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn RemoveItems<Identity: IOPCItemMgt_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::RemoveItems(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn SetActiveState<
Identity: IOPCItemMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
bactive: windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::SetActiveState(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&bactive),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn SetClientHandles<
Identity: IOPCItemMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
phclient: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::SetClientHandles(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&phclient),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn SetDatatypes<Identity: IOPCItemMgt_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
prequesteddatatypes: *const u16,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemMgt_Impl::SetDatatypes(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&prequesteddatatypes),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn CreateEnumerator<
Identity: IOPCItemMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCItemMgt_Impl::CreateEnumerator(this, core::mem::transmute_copy(&riid)) {
Ok(ok__) => {
ppunk.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
AddItems: AddItems::<Identity, OFFSET>,
ValidateItems: ValidateItems::<Identity, OFFSET>,
RemoveItems: RemoveItems::<Identity, OFFSET>,
SetActiveState: SetActiveState::<Identity, OFFSET>,
SetClientHandles: SetClientHandles::<Identity, OFFSET>,
SetDatatypes: SetDatatypes::<Identity, OFFSET>,
CreateEnumerator: CreateEnumerator::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCItemMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCItemMgt {}
windows_core::imp::define_interface!(
IOPCItemProperties,
IOPCItemProperties_Vtbl,
0x39c13a72_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCItemProperties, windows_core::IUnknown);
impl IOPCItemProperties {
pub unsafe fn QueryAvailableProperties<P0>(
&self,
szitemid: P0,
pdwcount: *mut u32,
pppropertyids: *mut *mut u32,
ppdescriptions: *mut *mut windows_core::PWSTR,
ppvtdatatypes: *mut *mut u16,
) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).QueryAvailableProperties)(
windows_core::Interface::as_raw(self),
szitemid.param().abi(),
pdwcount as _,
pppropertyids as _,
ppdescriptions as _,
ppvtdatatypes as _,
)
.ok()
}
}
pub unsafe fn GetItemProperties<P0>(
&self,
szitemid: P0,
dwcount: u32,
pdwpropertyids: *const u32,
ppvdata: *mut *mut windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).GetItemProperties)(
windows_core::Interface::as_raw(self),
szitemid.param().abi(),
dwcount,
pdwpropertyids,
ppvdata as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn LookupItemIDs<P0>(
&self,
szitemid: P0,
dwcount: u32,
pdwpropertyids: *const u32,
ppsznewitemids: *mut *mut windows_core::PWSTR,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).LookupItemIDs)(
windows_core::Interface::as_raw(self),
szitemid.param().abi(),
dwcount,
pdwpropertyids,
ppsznewitemids as _,
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCItemProperties_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub QueryAvailableProperties: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*mut u32,
*mut *mut u32,
*mut *mut windows_core::PWSTR,
*mut *mut u16,
) -> windows_core::HRESULT,
pub GetItemProperties: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
u32,
*const u32,
*mut *mut windows::Win32::System::Variant::VARIANT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub LookupItemIDs: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
u32,
*const u32,
*mut *mut windows_core::PWSTR,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCItemProperties_Impl: windows_core::IUnknownImpl {
fn QueryAvailableProperties(
&self,
szitemid: &windows_core::PCWSTR,
pdwcount: *mut u32,
pppropertyids: *mut *mut u32,
ppdescriptions: *mut *mut windows_core::PWSTR,
ppvtdatatypes: *mut *mut u16,
) -> windows_core::Result<()>;
fn GetItemProperties(
&self,
szitemid: &windows_core::PCWSTR,
dwcount: u32,
pdwpropertyids: *const u32,
ppvdata: *mut *mut windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn LookupItemIDs(
&self,
szitemid: &windows_core::PCWSTR,
dwcount: u32,
pdwpropertyids: *const u32,
ppsznewitemids: *mut *mut windows_core::PWSTR,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCItemProperties_Vtbl {
pub const fn new<Identity: IOPCItemProperties_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn QueryAvailableProperties<
Identity: IOPCItemProperties_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szitemid: windows_core::PCWSTR,
pdwcount: *mut u32,
pppropertyids: *mut *mut u32,
ppdescriptions: *mut *mut windows_core::PWSTR,
ppvtdatatypes: *mut *mut u16,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemProperties_Impl::QueryAvailableProperties(
this,
core::mem::transmute(&szitemid),
core::mem::transmute_copy(&pdwcount),
core::mem::transmute_copy(&pppropertyids),
core::mem::transmute_copy(&ppdescriptions),
core::mem::transmute_copy(&ppvtdatatypes),
)
.into()
}
}
unsafe extern "system" fn GetItemProperties<
Identity: IOPCItemProperties_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szitemid: windows_core::PCWSTR,
dwcount: u32,
pdwpropertyids: *const u32,
ppvdata: *mut *mut windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemProperties_Impl::GetItemProperties(
this,
core::mem::transmute(&szitemid),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pdwpropertyids),
core::mem::transmute_copy(&ppvdata),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn LookupItemIDs<
Identity: IOPCItemProperties_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szitemid: windows_core::PCWSTR,
dwcount: u32,
pdwpropertyids: *const u32,
ppsznewitemids: *mut *mut windows_core::PWSTR,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemProperties_Impl::LookupItemIDs(
this,
core::mem::transmute(&szitemid),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&pdwpropertyids),
core::mem::transmute_copy(&ppsznewitemids),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
QueryAvailableProperties: QueryAvailableProperties::<Identity, OFFSET>,
GetItemProperties: GetItemProperties::<Identity, OFFSET>,
LookupItemIDs: LookupItemIDs::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCItemProperties as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCItemProperties {}
windows_core::imp::define_interface!(
IOPCItemSamplingMgt,
IOPCItemSamplingMgt_Vtbl,
0x3e22d313_f08b_41a5_86c8_95e95cb49ffc
);
windows_core::imp::interface_hierarchy!(IOPCItemSamplingMgt, windows_core::IUnknown);
impl IOPCItemSamplingMgt {
pub unsafe fn SetItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
pdwrequestedsamplingrate: *const u32,
ppdwrevisedsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetItemSamplingRate)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pdwrequestedsamplingrate,
ppdwrevisedsamplingrate as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn GetItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
ppdwsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).GetItemSamplingRate)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
ppdwsamplingrate as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn ClearItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).ClearItemSamplingRate)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pperrors as _,
)
.ok()
}
}
pub unsafe fn SetItemBufferEnable(
&self,
dwcount: u32,
phserver: *const u32,
pbenable: *const windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).SetItemBufferEnable)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pbenable,
pperrors as _,
)
.ok()
}
}
pub unsafe fn GetItemBufferEnable(
&self,
dwcount: u32,
phserver: *const u32,
ppbenable: *mut *mut windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).GetItemBufferEnable)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
ppbenable as _,
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCItemSamplingMgt_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub SetItemSamplingRate: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const u32,
*mut *mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub GetItemSamplingRate: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub ClearItemSamplingRate: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub SetItemBufferEnable: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const windows_core::BOOL,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub GetItemBufferEnable: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*mut *mut windows_core::BOOL,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCItemSamplingMgt_Impl: windows_core::IUnknownImpl {
fn SetItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
pdwrequestedsamplingrate: *const u32,
ppdwrevisedsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn GetItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
ppdwsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn ClearItemSamplingRate(
&self,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn SetItemBufferEnable(
&self,
dwcount: u32,
phserver: *const u32,
pbenable: *const windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn GetItemBufferEnable(
&self,
dwcount: u32,
phserver: *const u32,
ppbenable: *mut *mut windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCItemSamplingMgt_Vtbl {
pub const fn new<Identity: IOPCItemSamplingMgt_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn SetItemSamplingRate<
Identity: IOPCItemSamplingMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pdwrequestedsamplingrate: *const u32,
ppdwrevisedsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemSamplingMgt_Impl::SetItemSamplingRate(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pdwrequestedsamplingrate),
core::mem::transmute_copy(&ppdwrevisedsamplingrate),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn GetItemSamplingRate<
Identity: IOPCItemSamplingMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
ppdwsamplingrate: *mut *mut u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemSamplingMgt_Impl::GetItemSamplingRate(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&ppdwsamplingrate),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn ClearItemSamplingRate<
Identity: IOPCItemSamplingMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemSamplingMgt_Impl::ClearItemSamplingRate(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn SetItemBufferEnable<
Identity: IOPCItemSamplingMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pbenable: *const windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemSamplingMgt_Impl::SetItemBufferEnable(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pbenable),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn GetItemBufferEnable<
Identity: IOPCItemSamplingMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
ppbenable: *mut *mut windows_core::BOOL,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCItemSamplingMgt_Impl::GetItemBufferEnable(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&ppbenable),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
SetItemSamplingRate: SetItemSamplingRate::<Identity, OFFSET>,
GetItemSamplingRate: GetItemSamplingRate::<Identity, OFFSET>,
ClearItemSamplingRate: ClearItemSamplingRate::<Identity, OFFSET>,
SetItemBufferEnable: SetItemBufferEnable::<Identity, OFFSET>,
GetItemBufferEnable: GetItemBufferEnable::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCItemSamplingMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCItemSamplingMgt {}
windows_core::imp::define_interface!(
IOPCPublicGroupStateMgt,
IOPCPublicGroupStateMgt_Vtbl,
0x39c13a51_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCPublicGroupStateMgt, windows_core::IUnknown);
impl IOPCPublicGroupStateMgt {
pub unsafe fn GetState(&self) -> windows_core::Result<windows_core::BOOL> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetState)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn MoveToPublic(&self) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).MoveToPublic)(windows_core::Interface::as_raw(
self,
))
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCPublicGroupStateMgt_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub GetState: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut windows_core::BOOL,
) -> windows_core::HRESULT,
pub MoveToPublic: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IOPCPublicGroupStateMgt_Impl: windows_core::IUnknownImpl {
fn GetState(&self) -> windows_core::Result<windows_core::BOOL>;
fn MoveToPublic(&self) -> windows_core::Result<()>;
}
impl IOPCPublicGroupStateMgt_Vtbl {
pub const fn new<Identity: IOPCPublicGroupStateMgt_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetState<
Identity: IOPCPublicGroupStateMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
ppublic: *mut windows_core::BOOL,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCPublicGroupStateMgt_Impl::GetState(this) {
Ok(ok__) => {
ppublic.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn MoveToPublic<
Identity: IOPCPublicGroupStateMgt_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCPublicGroupStateMgt_Impl::MoveToPublic(this).into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetState: GetState::<Identity, OFFSET>,
MoveToPublic: MoveToPublic::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCPublicGroupStateMgt as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCPublicGroupStateMgt {}
windows_core::imp::define_interface!(
IOPCServer,
IOPCServer_Vtbl,
0x39c13a4d_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCServer, windows_core::IUnknown);
impl IOPCServer {
pub unsafe fn AddGroup<P0>(
&self,
szname: P0,
bactive: bool,
dwrequestedupdaterate: u32,
hclientgroup: u32,
ptimebias: *const i32,
ppercentdeadband: *const f32,
dwlcid: u32,
phservergroup: *mut u32,
previsedupdaterate: *mut u32,
riid: *const windows_core::GUID,
ppunk: *mut Option<windows_core::IUnknown>,
) -> windows_core::Result<()>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
(windows_core::Interface::vtable(self).AddGroup)(
windows_core::Interface::as_raw(self),
szname.param().abi(),
bactive.into(),
dwrequestedupdaterate,
hclientgroup,
ptimebias,
ppercentdeadband,
dwlcid,
phservergroup as _,
previsedupdaterate as _,
riid,
core::mem::transmute(ppunk),
)
.ok()
}
}
pub unsafe fn GetErrorString(
&self,
dwerror: windows_core::HRESULT,
dwlocale: u32,
) -> windows_core::Result<windows_core::PWSTR> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetErrorString)(
windows_core::Interface::as_raw(self),
dwerror,
dwlocale,
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn GetGroupByName<P0>(
&self,
szname: P0,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetGroupByName)(
windows_core::Interface::as_raw(self),
szname.param().abi(),
riid,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
pub unsafe fn GetStatus(&self) -> windows_core::Result<*mut tagOPCSERVERSTATUS> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetStatus)(
windows_core::Interface::as_raw(self),
&mut result__,
)
.map(|| result__)
}
}
pub unsafe fn RemoveGroup(&self, hservergroup: u32, bforce: bool) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).RemoveGroup)(
windows_core::Interface::as_raw(self),
hservergroup,
bforce.into(),
)
.ok()
}
}
pub unsafe fn CreateGroupEnumerator(
&self,
dwscope: tagOPCENUMSCOPE,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown> {
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).CreateGroupEnumerator)(
windows_core::Interface::as_raw(self),
dwscope,
riid,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCServer_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub AddGroup: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
windows_core::BOOL,
u32,
u32,
*const i32,
*const f32,
u32,
*mut u32,
*mut u32,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
pub GetErrorString: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::HRESULT,
u32,
*mut windows_core::PWSTR,
) -> windows_core::HRESULT,
pub GetGroupByName: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
pub GetStatus: unsafe extern "system" fn(
*mut core::ffi::c_void,
*mut *mut tagOPCSERVERSTATUS,
) -> windows_core::HRESULT,
pub RemoveGroup: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
windows_core::BOOL,
) -> windows_core::HRESULT,
pub CreateGroupEnumerator: unsafe extern "system" fn(
*mut core::ffi::c_void,
tagOPCENUMSCOPE,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
}
pub trait IOPCServer_Impl: windows_core::IUnknownImpl {
fn AddGroup(
&self,
szname: &windows_core::PCWSTR,
bactive: windows_core::BOOL,
dwrequestedupdaterate: u32,
hclientgroup: u32,
ptimebias: *const i32,
ppercentdeadband: *const f32,
dwlcid: u32,
phservergroup: *mut u32,
previsedupdaterate: *mut u32,
riid: *const windows_core::GUID,
ppunk: windows_core::OutRef<'_, windows_core::IUnknown>,
) -> windows_core::Result<()>;
fn GetErrorString(
&self,
dwerror: windows_core::HRESULT,
dwlocale: u32,
) -> windows_core::Result<windows_core::PWSTR>;
fn GetGroupByName(
&self,
szname: &windows_core::PCWSTR,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>;
fn GetStatus(&self) -> windows_core::Result<*mut tagOPCSERVERSTATUS>;
fn RemoveGroup(
&self,
hservergroup: u32,
bforce: windows_core::BOOL,
) -> windows_core::Result<()>;
fn CreateGroupEnumerator(
&self,
dwscope: tagOPCENUMSCOPE,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>;
}
impl IOPCServer_Vtbl {
pub const fn new<Identity: IOPCServer_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn AddGroup<Identity: IOPCServer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
szname: windows_core::PCWSTR,
bactive: windows_core::BOOL,
dwrequestedupdaterate: u32,
hclientgroup: u32,
ptimebias: *const i32,
ppercentdeadband: *const f32,
dwlcid: u32,
phservergroup: *mut u32,
previsedupdaterate: *mut u32,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCServer_Impl::AddGroup(
this,
core::mem::transmute(&szname),
core::mem::transmute_copy(&bactive),
core::mem::transmute_copy(&dwrequestedupdaterate),
core::mem::transmute_copy(&hclientgroup),
core::mem::transmute_copy(&ptimebias),
core::mem::transmute_copy(&ppercentdeadband),
core::mem::transmute_copy(&dwlcid),
core::mem::transmute_copy(&phservergroup),
core::mem::transmute_copy(&previsedupdaterate),
core::mem::transmute_copy(&riid),
core::mem::transmute_copy(&ppunk),
)
.into()
}
}
unsafe extern "system" fn GetErrorString<Identity: IOPCServer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwerror: windows_core::HRESULT,
dwlocale: u32,
ppstring: *mut windows_core::PWSTR,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCServer_Impl::GetErrorString(
this,
core::mem::transmute_copy(&dwerror),
core::mem::transmute_copy(&dwlocale),
) {
Ok(ok__) => {
ppstring.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetGroupByName<Identity: IOPCServer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
szname: windows_core::PCWSTR,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCServer_Impl::GetGroupByName(
this,
core::mem::transmute(&szname),
core::mem::transmute_copy(&riid),
) {
Ok(ok__) => {
ppunk.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn GetStatus<Identity: IOPCServer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
ppserverstatus: *mut *mut tagOPCSERVERSTATUS,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCServer_Impl::GetStatus(this) {
Ok(ok__) => {
ppserverstatus.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn RemoveGroup<Identity: IOPCServer_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
hservergroup: u32,
bforce: windows_core::BOOL,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCServer_Impl::RemoveGroup(
this,
core::mem::transmute_copy(&hservergroup),
core::mem::transmute_copy(&bforce),
)
.into()
}
}
unsafe extern "system" fn CreateGroupEnumerator<
Identity: IOPCServer_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
dwscope: tagOPCENUMSCOPE,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCServer_Impl::CreateGroupEnumerator(
this,
core::mem::transmute_copy(&dwscope),
core::mem::transmute_copy(&riid),
) {
Ok(ok__) => {
ppunk.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
AddGroup: AddGroup::<Identity, OFFSET>,
GetErrorString: GetErrorString::<Identity, OFFSET>,
GetGroupByName: GetGroupByName::<Identity, OFFSET>,
GetStatus: GetStatus::<Identity, OFFSET>,
RemoveGroup: RemoveGroup::<Identity, OFFSET>,
CreateGroupEnumerator: CreateGroupEnumerator::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCServer as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCServer {}
windows_core::imp::define_interface!(
IOPCServerPublicGroups,
IOPCServerPublicGroups_Vtbl,
0x39c13a4e_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCServerPublicGroups, windows_core::IUnknown);
impl IOPCServerPublicGroups {
pub unsafe fn GetPublicGroupByName<P0>(
&self,
szname: P0,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>
where
P0: windows_core::Param<windows_core::PCWSTR>,
{
unsafe {
let mut result__ = core::mem::zeroed();
(windows_core::Interface::vtable(self).GetPublicGroupByName)(
windows_core::Interface::as_raw(self),
szname.param().abi(),
riid,
&mut result__,
)
.and_then(|| windows_core::Type::from_abi(result__))
}
}
pub unsafe fn RemovePublicGroup(
&self,
hservergroup: u32,
bforce: bool,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).RemovePublicGroup)(
windows_core::Interface::as_raw(self),
hservergroup,
bforce.into(),
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCServerPublicGroups_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub GetPublicGroupByName: unsafe extern "system" fn(
*mut core::ffi::c_void,
windows_core::PCWSTR,
*const windows_core::GUID,
*mut *mut core::ffi::c_void,
) -> windows_core::HRESULT,
pub RemovePublicGroup: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
windows_core::BOOL,
) -> windows_core::HRESULT,
}
pub trait IOPCServerPublicGroups_Impl: windows_core::IUnknownImpl {
fn GetPublicGroupByName(
&self,
szname: &windows_core::PCWSTR,
riid: *const windows_core::GUID,
) -> windows_core::Result<windows_core::IUnknown>;
fn RemovePublicGroup(
&self,
hservergroup: u32,
bforce: windows_core::BOOL,
) -> windows_core::Result<()>;
}
impl IOPCServerPublicGroups_Vtbl {
pub const fn new<Identity: IOPCServerPublicGroups_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn GetPublicGroupByName<
Identity: IOPCServerPublicGroups_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
szname: windows_core::PCWSTR,
riid: *const windows_core::GUID,
ppunk: *mut *mut core::ffi::c_void,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
match IOPCServerPublicGroups_Impl::GetPublicGroupByName(
this,
core::mem::transmute(&szname),
core::mem::transmute_copy(&riid),
) {
Ok(ok__) => {
ppunk.write(core::mem::transmute(ok__));
windows_core::HRESULT(0)
}
Err(err) => err.into(),
}
}
}
unsafe extern "system" fn RemovePublicGroup<
Identity: IOPCServerPublicGroups_Impl,
const OFFSET: isize,
>(
this: *mut core::ffi::c_void,
hservergroup: u32,
bforce: windows_core::BOOL,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCServerPublicGroups_Impl::RemovePublicGroup(
this,
core::mem::transmute_copy(&hservergroup),
core::mem::transmute_copy(&bforce),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
GetPublicGroupByName: GetPublicGroupByName::<Identity, OFFSET>,
RemovePublicGroup: RemovePublicGroup::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCServerPublicGroups as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCServerPublicGroups {}
windows_core::imp::define_interface!(
IOPCSyncIO,
IOPCSyncIO_Vtbl,
0x39c13a52_011e_11d0_9675_0020afd8adb3
);
windows_core::imp::interface_hierarchy!(IOPCSyncIO, windows_core::IUnknown);
impl IOPCSyncIO {
pub unsafe fn Read(
&self,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ppitemvalues: *mut *mut tagOPCITEMSTATE,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Read)(
windows_core::Interface::as_raw(self),
dwsource,
dwcount,
phserver,
ppitemvalues as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn Write(
&self,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).Write)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
core::mem::transmute(pitemvalues),
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCSyncIO_Vtbl {
pub base__: windows_core::IUnknown_Vtbl,
pub Read: unsafe extern "system" fn(
*mut core::ffi::c_void,
tagOPCDATASOURCE,
u32,
*const u32,
*mut *mut tagOPCITEMSTATE,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub Write: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const windows::Win32::System::Variant::VARIANT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCSyncIO_Impl: windows_core::IUnknownImpl {
fn Read(
&self,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ppitemvalues: *mut *mut tagOPCITEMSTATE,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn Write(
&self,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCSyncIO_Vtbl {
pub const fn new<Identity: IOPCSyncIO_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn Read<Identity: IOPCSyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwsource: tagOPCDATASOURCE,
dwcount: u32,
phserver: *const u32,
ppitemvalues: *mut *mut tagOPCITEMSTATE,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCSyncIO_Impl::Read(
this,
core::mem::transmute_copy(&dwsource),
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&ppitemvalues),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn Write<Identity: IOPCSyncIO_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pitemvalues: *const windows::Win32::System::Variant::VARIANT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCSyncIO_Impl::Write(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pitemvalues),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
Read: Read::<Identity, OFFSET>,
Write: Write::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCSyncIO as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCSyncIO {}
windows_core::imp::define_interface!(
IOPCSyncIO2,
IOPCSyncIO2_Vtbl,
0x730f5f0f_55b1_4c81_9e18_ff8a0904e1fa
);
impl core::ops::Deref for IOPCSyncIO2 {
type Target = IOPCSyncIO;
fn deref(&self) -> &Self::Target {
unsafe { core::mem::transmute(self) }
}
}
windows_core::imp::interface_hierarchy!(IOPCSyncIO2, windows_core::IUnknown, IOPCSyncIO);
impl IOPCSyncIO2 {
pub unsafe fn ReadMaxAge(
&self,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).ReadMaxAge)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
pdwmaxage,
ppvvalues as _,
ppwqualities as _,
ppfttimestamps as _,
pperrors as _,
)
.ok()
}
}
pub unsafe fn WriteVQT(
&self,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()> {
unsafe {
(windows_core::Interface::vtable(self).WriteVQT)(
windows_core::Interface::as_raw(self),
dwcount,
phserver,
core::mem::transmute(pitemvqt),
pperrors as _,
)
.ok()
}
}
}
#[repr(C)]
#[doc(hidden)]
pub struct IOPCSyncIO2_Vtbl {
pub base__: IOPCSyncIO_Vtbl,
pub ReadMaxAge: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const u32,
*mut *mut windows::Win32::System::Variant::VARIANT,
*mut *mut u16,
*mut *mut windows::Win32::Foundation::FILETIME,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
pub WriteVQT: unsafe extern "system" fn(
*mut core::ffi::c_void,
u32,
*const u32,
*const tagOPCITEMVQT,
*mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT,
}
pub trait IOPCSyncIO2_Impl: IOPCSyncIO_Impl {
fn ReadMaxAge(
&self,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
fn WriteVQT(
&self,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::Result<()>;
}
impl IOPCSyncIO2_Vtbl {
pub const fn new<Identity: IOPCSyncIO2_Impl, const OFFSET: isize>() -> Self {
unsafe extern "system" fn ReadMaxAge<Identity: IOPCSyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pdwmaxage: *const u32,
ppvvalues: *mut *mut windows::Win32::System::Variant::VARIANT,
ppwqualities: *mut *mut u16,
ppfttimestamps: *mut *mut windows::Win32::Foundation::FILETIME,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCSyncIO2_Impl::ReadMaxAge(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pdwmaxage),
core::mem::transmute_copy(&ppvvalues),
core::mem::transmute_copy(&ppwqualities),
core::mem::transmute_copy(&ppfttimestamps),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
unsafe extern "system" fn WriteVQT<Identity: IOPCSyncIO2_Impl, const OFFSET: isize>(
this: *mut core::ffi::c_void,
dwcount: u32,
phserver: *const u32,
pitemvqt: *const tagOPCITEMVQT,
pperrors: *mut *mut windows_core::HRESULT,
) -> windows_core::HRESULT {
unsafe {
let this: &Identity =
&*((this as *const *const ()).offset(OFFSET) as *const Identity);
IOPCSyncIO2_Impl::WriteVQT(
this,
core::mem::transmute_copy(&dwcount),
core::mem::transmute_copy(&phserver),
core::mem::transmute_copy(&pitemvqt),
core::mem::transmute_copy(&pperrors),
)
.into()
}
}
Self {
base__: IOPCSyncIO_Vtbl::new::<Identity, OFFSET>(),
ReadMaxAge: ReadMaxAge::<Identity, OFFSET>,
WriteVQT: WriteVQT::<Identity, OFFSET>,
}
}
pub fn matches(iid: &windows_core::GUID) -> bool {
iid == &<IOPCSyncIO2 as windows_core::Interface>::IID
|| iid == &<IOPCSyncIO as windows_core::Interface>::IID
}
}
impl windows_core::RuntimeName for IOPCSyncIO2 {}
pub const OPC_ANALOG: tagOPCEUTYPE = tagOPCEUTYPE(1i32);
pub const OPC_BRANCH: tagOPCBROWSETYPE = tagOPCBROWSETYPE(1i32);
pub const OPC_BROWSE_DOWN: tagOPCBROWSEDIRECTION = tagOPCBROWSEDIRECTION(2i32);
pub const OPC_BROWSE_FILTER_ALL: tagOPCBROWSEFILTER = tagOPCBROWSEFILTER(1i32);
pub const OPC_BROWSE_FILTER_BRANCHES: tagOPCBROWSEFILTER = tagOPCBROWSEFILTER(2i32);
pub const OPC_BROWSE_FILTER_ITEMS: tagOPCBROWSEFILTER = tagOPCBROWSEFILTER(3i32);
pub const OPC_BROWSE_HASCHILDREN: u32 = 1u32;
pub const OPC_BROWSE_ISITEM: u32 = 2u32;
pub const OPC_BROWSE_TO: tagOPCBROWSEDIRECTION = tagOPCBROWSEDIRECTION(3i32);
pub const OPC_BROWSE_UP: tagOPCBROWSEDIRECTION = tagOPCBROWSEDIRECTION(1i32);
pub const OPC_CATEGORY_DESCRIPTION_DA10: windows_core::PCWSTR =
windows_core::w!("OPC Data Access Servers Version 1.0");
pub const OPC_CATEGORY_DESCRIPTION_DA20: windows_core::PCWSTR =
windows_core::w!("OPC Data Access Servers Version 2.0");
pub const OPC_CATEGORY_DESCRIPTION_DA30: windows_core::PCWSTR =
windows_core::w!("OPC Data Access Servers Version 3.0");
pub const OPC_CATEGORY_DESCRIPTION_XMLDA10: windows_core::PCWSTR =
windows_core::w!("OPC XML Data Access Servers Version 1.0");
pub const OPC_CONSISTENCY_WINDOW_NOT_CONSISTENT: windows_core::PCWSTR =
windows_core::w!("Not Consistent");
pub const OPC_CONSISTENCY_WINDOW_UNKNOWN: windows_core::PCWSTR = windows_core::w!("Unknown");
pub const OPC_DS_CACHE: tagOPCDATASOURCE = tagOPCDATASOURCE(1i32);
pub const OPC_DS_DEVICE: tagOPCDATASOURCE = tagOPCDATASOURCE(2i32);
pub const OPC_ENUMERATED: tagOPCEUTYPE = tagOPCEUTYPE(2i32);
pub const OPC_ENUM_ALL: tagOPCENUMSCOPE = tagOPCENUMSCOPE(6i32);
pub const OPC_ENUM_ALL_CONNECTIONS: tagOPCENUMSCOPE = tagOPCENUMSCOPE(3i32);
pub const OPC_ENUM_PRIVATE: tagOPCENUMSCOPE = tagOPCENUMSCOPE(4i32);
pub const OPC_ENUM_PRIVATE_CONNECTIONS: tagOPCENUMSCOPE = tagOPCENUMSCOPE(1i32);
pub const OPC_ENUM_PUBLIC: tagOPCENUMSCOPE = tagOPCENUMSCOPE(5i32);
pub const OPC_ENUM_PUBLIC_CONNECTIONS: tagOPCENUMSCOPE = tagOPCENUMSCOPE(2i32);
pub const OPC_FLAT: tagOPCBROWSETYPE = tagOPCBROWSETYPE(3i32);
pub const OPC_LEAF: tagOPCBROWSETYPE = tagOPCBROWSETYPE(2i32);
pub const OPC_LIMIT_CONST: u16 = 3u16;
pub const OPC_LIMIT_HIGH: u16 = 2u16;
pub const OPC_LIMIT_LOW: u16 = 1u16;
pub const OPC_LIMIT_MASK: u16 = 3u16;
pub const OPC_LIMIT_OK: u16 = 0u16;
pub const OPC_NOENUM: tagOPCEUTYPE = tagOPCEUTYPE(0i32);
pub const OPC_NS_FLAT: tagOPCNAMESPACETYPE = tagOPCNAMESPACETYPE(2i32);
pub const OPC_NS_HIERARCHIAL: tagOPCNAMESPACETYPE = tagOPCNAMESPACETYPE(1i32);
pub const OPC_PROPERTY_ACCESS_RIGHTS: u32 = 5u32;
pub const OPC_PROPERTY_ALARM_AREA_LIST: u32 = 302u32;
pub const OPC_PROPERTY_ALARM_QUICK_HELP: u32 = 301u32;
pub const OPC_PROPERTY_CHANGE_RATE_LIMIT: u32 = 311u32;
pub const OPC_PROPERTY_CLOSE_LABEL: u32 = 106u32;
pub const OPC_PROPERTY_CONDITION_LOGIC: u32 = 304u32;
pub const OPC_PROPERTY_CONDITION_STATUS: u32 = 300u32;
pub const OPC_PROPERTY_CONSISTENCY_WINDOW: u32 = 605u32;
pub const OPC_PROPERTY_DATATYPE: u32 = 1u32;
pub const OPC_PROPERTY_DATA_FILTER_VALUE: u32 = 609u32;
pub const OPC_PROPERTY_DEADBAND: u32 = 306u32;
pub const OPC_PROPERTY_DESCRIPTION: u32 = 101u32;
pub const OPC_PROPERTY_DESC_ACCESS_RIGHTS: windows_core::PCWSTR =
windows_core::w!("Item Access Rights");
pub const OPC_PROPERTY_DESC_ALARM_AREA_LIST: windows_core::PCWSTR =
windows_core::w!("Alarm Area List");
pub const OPC_PROPERTY_DESC_ALARM_QUICK_HELP: windows_core::PCWSTR =
windows_core::w!("Alarm Quick Help");
pub const OPC_PROPERTY_DESC_CHANGE_RATE_LIMIT: windows_core::PCWSTR =
windows_core::w!("Rate of Change Limit");
pub const OPC_PROPERTY_DESC_CLOSE_LABEL: windows_core::PCWSTR =
windows_core::w!("Contact Close Label");
pub const OPC_PROPERTY_DESC_CONDITION_LOGIC: windows_core::PCWSTR =
windows_core::w!("Condition Logic");
pub const OPC_PROPERTY_DESC_CONDITION_STATUS: windows_core::PCWSTR =
windows_core::w!("Condition Status");
pub const OPC_PROPERTY_DESC_CONSISTENCY_WINDOW: windows_core::PCWSTR =
windows_core::w!("Consistency Window");
pub const OPC_PROPERTY_DESC_DATATYPE: windows_core::PCWSTR =
windows_core::w!("Item Canonical Data Type");
pub const OPC_PROPERTY_DESC_DATA_FILTER_VALUE: windows_core::PCWSTR =
windows_core::w!("Data Filter Value");
pub const OPC_PROPERTY_DESC_DEADBAND: windows_core::PCWSTR = windows_core::w!("Deadband");
pub const OPC_PROPERTY_DESC_DESCRIPTION: windows_core::PCWSTR =
windows_core::w!("Item Description");
pub const OPC_PROPERTY_DESC_DEVIATION_LIMIT: windows_core::PCWSTR =
windows_core::w!("Deviation Limit");
pub const OPC_PROPERTY_DESC_DICTIONARY: windows_core::PCWSTR = windows_core::w!("Dictionary");
pub const OPC_PROPERTY_DESC_DICTIONARY_ID: windows_core::PCWSTR = windows_core::w!("Dictionary ID");
pub const OPC_PROPERTY_DESC_EU_INFO: windows_core::PCWSTR = windows_core::w!("Item EU Info");
pub const OPC_PROPERTY_DESC_EU_TYPE: windows_core::PCWSTR = windows_core::w!("Item EU Type");
pub const OPC_PROPERTY_DESC_EU_UNITS: windows_core::PCWSTR = windows_core::w!("EU Units");
pub const OPC_PROPERTY_DESC_HIGH_EU: windows_core::PCWSTR = windows_core::w!("High EU");
pub const OPC_PROPERTY_DESC_HIGH_IR: windows_core::PCWSTR =
windows_core::w!("High Instrument Range");
pub const OPC_PROPERTY_DESC_HIHI_LIMIT: windows_core::PCWSTR = windows_core::w!("HiHi Limit");
pub const OPC_PROPERTY_DESC_HI_LIMIT: windows_core::PCWSTR = windows_core::w!("Hi Limit");
pub const OPC_PROPERTY_DESC_LIMIT_EXCEEDED: windows_core::PCWSTR =
windows_core::w!("Limit Exceeded");
pub const OPC_PROPERTY_DESC_LOLO_LIMIT: windows_core::PCWSTR = windows_core::w!("LoLo Limit");
pub const OPC_PROPERTY_DESC_LOW_EU: windows_core::PCWSTR = windows_core::w!("Low EU");
pub const OPC_PROPERTY_DESC_LOW_IR: windows_core::PCWSTR = windows_core::w!("Low Instrument Range");
pub const OPC_PROPERTY_DESC_LO_LIMIT: windows_core::PCWSTR = windows_core::w!("Lo Limit");
pub const OPC_PROPERTY_DESC_OPEN_LABEL: windows_core::PCWSTR =
windows_core::w!("Contact Open Label");
pub const OPC_PROPERTY_DESC_PRIMARY_ALARM_AREA: windows_core::PCWSTR =
windows_core::w!("Primary Alarm Area");
pub const OPC_PROPERTY_DESC_QUALITY: windows_core::PCWSTR = windows_core::w!("Item Quality");
pub const OPC_PROPERTY_DESC_SCAN_RATE: windows_core::PCWSTR = windows_core::w!("Server Scan Rate");
pub const OPC_PROPERTY_DESC_SOUND_FILE: windows_core::PCWSTR = windows_core::w!("Sound File");
pub const OPC_PROPERTY_DESC_TIMESTAMP: windows_core::PCWSTR = windows_core::w!("Item Timestamp");
pub const OPC_PROPERTY_DESC_TIMEZONE: windows_core::PCWSTR = windows_core::w!("Item Timezone");
pub const OPC_PROPERTY_DESC_TYPE_DESCRIPTION: windows_core::PCWSTR =
windows_core::w!("Type Description");
pub const OPC_PROPERTY_DESC_TYPE_ID: windows_core::PCWSTR = windows_core::w!("Type ID");
pub const OPC_PROPERTY_DESC_TYPE_SYSTEM_ID: windows_core::PCWSTR =
windows_core::w!("Type System ID");
pub const OPC_PROPERTY_DESC_UNCONVERTED_ITEM_ID: windows_core::PCWSTR =
windows_core::w!("Unconverted Item ID");
pub const OPC_PROPERTY_DESC_UNFILTERED_ITEM_ID: windows_core::PCWSTR =
windows_core::w!("Unfiltered Item ID");
pub const OPC_PROPERTY_DESC_VALUE: windows_core::PCWSTR = windows_core::w!("Item Value");
pub const OPC_PROPERTY_DESC_WRITE_BEHAVIOR: windows_core::PCWSTR =
windows_core::w!("Write Behavior");
pub const OPC_PROPERTY_DEVIATION_LIMIT: u32 = 312u32;
pub const OPC_PROPERTY_DICTIONARY: u32 = 603u32;
pub const OPC_PROPERTY_DICTIONARY_ID: u32 = 601u32;
pub const OPC_PROPERTY_EU_INFO: u32 = 8u32;
pub const OPC_PROPERTY_EU_TYPE: u32 = 7u32;
pub const OPC_PROPERTY_EU_UNITS: u32 = 100u32;
pub const OPC_PROPERTY_HIGH_EU: u32 = 102u32;
pub const OPC_PROPERTY_HIGH_IR: u32 = 104u32;
pub const OPC_PROPERTY_HIHI_LIMIT: u32 = 307u32;
pub const OPC_PROPERTY_HI_LIMIT: u32 = 308u32;
pub const OPC_PROPERTY_LIMIT_EXCEEDED: u32 = 305u32;
pub const OPC_PROPERTY_LOLO_LIMIT: u32 = 310u32;
pub const OPC_PROPERTY_LOW_EU: u32 = 103u32;
pub const OPC_PROPERTY_LOW_IR: u32 = 105u32;
pub const OPC_PROPERTY_LO_LIMIT: u32 = 309u32;
pub const OPC_PROPERTY_OPEN_LABEL: u32 = 107u32;
pub const OPC_PROPERTY_PRIMARY_ALARM_AREA: u32 = 303u32;
pub const OPC_PROPERTY_QUALITY: u32 = 3u32;
pub const OPC_PROPERTY_SCAN_RATE: u32 = 6u32;
pub const OPC_PROPERTY_SOUND_FILE: u32 = 313u32;
pub const OPC_PROPERTY_TIMESTAMP: u32 = 4u32;
pub const OPC_PROPERTY_TIMEZONE: u32 = 108u32;
pub const OPC_PROPERTY_TYPE_DESCRIPTION: u32 = 604u32;
pub const OPC_PROPERTY_TYPE_ID: u32 = 602u32;
pub const OPC_PROPERTY_TYPE_SYSTEM_ID: u32 = 600u32;
pub const OPC_PROPERTY_UNCONVERTED_ITEM_ID: u32 = 607u32;
pub const OPC_PROPERTY_UNFILTERED_ITEM_ID: u32 = 608u32;
pub const OPC_PROPERTY_VALUE: u32 = 2u32;
pub const OPC_PROPERTY_WRITE_BEHAVIOR: u32 = 606u32;
pub const OPC_QUALITY_BAD: u16 = 0u16;
pub const OPC_QUALITY_COMM_FAILURE: u16 = 24u16;
pub const OPC_QUALITY_CONFIG_ERROR: u16 = 4u16;
pub const OPC_QUALITY_DEVICE_FAILURE: u16 = 12u16;
pub const OPC_QUALITY_EGU_EXCEEDED: u16 = 84u16;
pub const OPC_QUALITY_GOOD: u16 = 192u16;
pub const OPC_QUALITY_LAST_KNOWN: u16 = 20u16;
pub const OPC_QUALITY_LAST_USABLE: u16 = 68u16;
pub const OPC_QUALITY_LOCAL_OVERRIDE: u16 = 216u16;
pub const OPC_QUALITY_MASK: u16 = 192u16;
pub const OPC_QUALITY_NOT_CONNECTED: u16 = 8u16;
pub const OPC_QUALITY_OUT_OF_SERVICE: u16 = 28u16;
pub const OPC_QUALITY_SENSOR_CAL: u16 = 80u16;
pub const OPC_QUALITY_SENSOR_FAILURE: u16 = 16u16;
pub const OPC_QUALITY_SUB_NORMAL: u16 = 88u16;
pub const OPC_QUALITY_UNCERTAIN: u16 = 64u16;
pub const OPC_QUALITY_WAITING_FOR_INITIAL_DATA: u16 = 32u16;
pub const OPC_READABLE: u32 = 1u32;
pub const OPC_STATUS_COMM_FAULT: tagOPCSERVERSTATE = tagOPCSERVERSTATE(6i32);
pub const OPC_STATUS_FAILED: tagOPCSERVERSTATE = tagOPCSERVERSTATE(2i32);
pub const OPC_STATUS_MASK: u16 = 252u16;
pub const OPC_STATUS_NOCONFIG: tagOPCSERVERSTATE = tagOPCSERVERSTATE(3i32);
pub const OPC_STATUS_RUNNING: tagOPCSERVERSTATE = tagOPCSERVERSTATE(1i32);
pub const OPC_STATUS_SUSPENDED: tagOPCSERVERSTATE = tagOPCSERVERSTATE(4i32);
pub const OPC_STATUS_TEST: tagOPCSERVERSTATE = tagOPCSERVERSTATE(5i32);
pub const OPC_TYPE_SYSTEM_OPCBINARY: windows_core::PCWSTR = windows_core::w!("OPCBinary");
pub const OPC_TYPE_SYSTEM_XMLSCHEMA: windows_core::PCWSTR = windows_core::w!("XMLSchema");
pub const OPC_WRITEABLE: u32 = 2u32;
pub const OPC_WRITE_BEHAVIOR_ALL_OR_NOTHING: windows_core::PCWSTR =
windows_core::w!("All or Nothing");
pub const OPC_WRITE_BEHAVIOR_BEST_EFFORT: windows_core::PCWSTR = windows_core::w!("Best Effort");
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCBROWSEDIRECTION(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCBROWSEELEMENT {
pub szName: windows_core::PWSTR,
pub szItemID: windows_core::PWSTR,
pub dwFlagValue: u32,
pub dwReserved: u32,
pub ItemProperties: tagOPCITEMPROPERTIES,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCBROWSEFILTER(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCBROWSETYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCDATASOURCE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCENUMSCOPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCEUTYPE(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCGROUPHEADER {
pub dwSize: u32,
pub dwItemCount: u32,
pub hClientGroup: u32,
pub dwTransactionID: u32,
pub hrStatus: windows_core::HRESULT,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCGROUPHEADERWRITE {
pub dwItemCount: u32,
pub hClientGroup: u32,
pub dwTransactionID: u32,
pub hrStatus: windows_core::HRESULT,
}
#[repr(C)]
pub struct tagOPCITEMATTRIBUTES {
pub szAccessPath: windows_core::PWSTR,
pub szItemID: windows_core::PWSTR,
pub bActive: windows_core::BOOL,
pub hClient: u32,
pub hServer: u32,
pub dwAccessRights: u32,
pub dwBlobSize: u32,
pub pBlob: *mut u8,
pub vtRequestedDataType: u16,
pub vtCanonicalDataType: u16,
pub dwEUType: tagOPCEUTYPE,
pub vEUInfo: windows::Win32::System::Variant::VARIANT,
}
impl Clone for tagOPCITEMATTRIBUTES {
fn clone(&self) -> Self {
unsafe { core::mem::transmute_copy(self) }
}
}
impl Default for tagOPCITEMATTRIBUTES {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct tagOPCITEMDEF {
pub szAccessPath: windows_core::PWSTR,
pub szItemID: windows_core::PWSTR,
pub bActive: windows_core::BOOL,
pub hClient: u32,
pub dwBlobSize: u32,
pub pBlob: *mut u8,
pub vtRequestedDataType: u16,
pub wReserved: u16,
}
impl Default for tagOPCITEMDEF {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCITEMHEADER1 {
pub hClient: u32,
pub dwValueOffset: u32,
pub wQuality: u16,
pub wReserved: u16,
pub ftTimeStampItem: windows::Win32::Foundation::FILETIME,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCITEMHEADER2 {
pub hClient: u32,
pub dwValueOffset: u32,
pub wQuality: u16,
pub wReserved: u16,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCITEMHEADERWRITE {
pub hClient: u32,
pub dwError: windows_core::HRESULT,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct tagOPCITEMPROPERTIES {
pub hrErrorID: windows_core::HRESULT,
pub dwNumProperties: u32,
pub pItemProperties: *mut tagOPCITEMPROPERTY,
pub dwReserved: u32,
}
impl Default for tagOPCITEMPROPERTIES {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
pub struct tagOPCITEMPROPERTY {
pub vtDataType: u16,
pub wReserved: u16,
pub dwPropertyID: u32,
pub szItemID: windows_core::PWSTR,
pub szDescription: windows_core::PWSTR,
pub vValue: windows::Win32::System::Variant::VARIANT,
pub hrErrorID: windows_core::HRESULT,
pub dwReserved: u32,
}
impl Clone for tagOPCITEMPROPERTY {
fn clone(&self) -> Self {
unsafe { core::mem::transmute_copy(self) }
}
}
impl Default for tagOPCITEMPROPERTY {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct tagOPCITEMRESULT {
pub hServer: u32,
pub vtCanonicalDataType: u16,
pub wReserved: u16,
pub dwAccessRights: u32,
pub dwBlobSize: u32,
pub pBlob: *mut u8,
}
impl Default for tagOPCITEMRESULT {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
pub struct tagOPCITEMSTATE {
pub hClient: u32,
pub ftTimeStamp: windows::Win32::Foundation::FILETIME,
pub wQuality: u16,
pub wReserved: u16,
pub vDataValue: windows::Win32::System::Variant::VARIANT,
}
impl Clone for tagOPCITEMSTATE {
fn clone(&self) -> Self {
unsafe { core::mem::transmute_copy(self) }
}
}
impl Default for tagOPCITEMSTATE {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
pub struct tagOPCITEMVQT {
pub vDataValue: windows::Win32::System::Variant::VARIANT,
pub bQualitySpecified: windows_core::BOOL,
pub wQuality: u16,
pub wReserved: u16,
pub bTimeStampSpecified: windows_core::BOOL,
pub dwReserved: u32,
pub ftTimeStamp: windows::Win32::Foundation::FILETIME,
}
impl Clone for tagOPCITEMVQT {
fn clone(&self) -> Self {
unsafe { core::mem::transmute_copy(self) }
}
}
impl Default for tagOPCITEMVQT {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCNAMESPACETYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct tagOPCSERVERSTATE(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct tagOPCSERVERSTATUS {
pub ftStartTime: windows::Win32::Foundation::FILETIME,
pub ftCurrentTime: windows::Win32::Foundation::FILETIME,
pub ftLastUpdateTime: windows::Win32::Foundation::FILETIME,
pub dwServerState: tagOPCSERVERSTATE,
pub dwGroupCount: u32,
pub dwBandWidth: u32,
pub wMajorVersion: u16,
pub wMinorVersion: u16,
pub wBuildNumber: u16,
pub wReserved: u16,
pub szVendorInfo: windows_core::PWSTR,
}