use crate::*;
use crate::ctypes::*;
use crate::d3d11::*;
use std::ptr::*;
#[derive(Clone)] #[repr(transparent)]
pub struct Module(pub(crate) mcom::Rc<winapi::um::d3d11shader::ID3D11Module>);
convert!(unsafe Module => Unknown, winapi::um::d3d11shader::ID3D11Module);
impl Module {
pub fn create_instance(&self, namespace: impl TryIntoAsOptCStr) -> Result<ModuleInstance, MethodError> {
let namespace = namespace.try_into().map_err(|e| MethodError::new("ID3D11Module::CreateInstance", e))?;
let namespace = namespace.as_opt_cstr();
let mut instance = null_mut();
let hr = unsafe { self.0.CreateInstance(namespace, &mut instance) };
MethodError::check("ID3D11Module::CreateInstance", hr)?;
Ok(unsafe { ModuleInstance::from_raw(instance) })
}
}