#![allow(non_camel_case_types, non_snake_case)]
use crate::decl::*;
use crate::kernel::privs::*;
use crate::ole::{privs::*, vts::*};
use crate::prelude::*;
com_interface! { ISequentialStream: "0c733a30-2a1c-11ce-ade5-00aa0044773d";
}
impl ole_ISequentialStream for ISequentialStream {}
pub trait ole_ISequentialStream: ole_IUnknown {
fn Read(&self, buffer: &mut [u8]) -> HrResult<u32> {
let mut num_read = 0u32;
HrRet(unsafe {
(vt::<ISequentialStreamVT>(self).Read)(
self.ptr(),
buffer.as_mut_ptr() as _,
buffer.len() as _,
&mut num_read,
)
})
.to_bool_hrresult()
.map(|_| num_read)
}
fn Write(&self, data: &[u8]) -> HrResult<u32> {
let mut num_written = 0u32;
HrRet(unsafe {
(vt::<ISequentialStreamVT>(self).Read)(
self.ptr(),
vec_ptr(data) as _,
data.len() as _,
&mut num_written,
)
})
.to_hrresult()
.map(|_| num_written)
}
}