MCPcopy Create free account
hub / github.com/Recordscript/recordscript / new

Method new

libs/scrap/src/dxgi/mag.rs:118–189  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

116// If so, strange errors occur.
117impl MagInterface {
118 fn new() -> Result<Self> {
119 let mut s = MagInterface {
120 init_succeeded: false,
121 lib_handle: NULL as _,
122 mag_initialize_func: None,
123 mag_uninitialize_func: None,
124 set_window_source_func: None,
125 set_window_filter_list_func: None,
126 set_image_scaling_callback_func: None,
127 };
128 s.init_succeeded = false;
129 unsafe {
130 // load lib
131 let lib_file_name = "Magnification.dll";
132 let lib_file_name_c = CString::new(lib_file_name)?;
133 s.lib_handle = LoadLibraryExA(
134 lib_file_name_c.as_ptr() as _,
135 NULL,
136 LOAD_WITH_ALTERED_SEARCH_PATH,
137 );
138 if s.lib_handle.is_null() {
139 return Err(Error::new(
140 ErrorKind::Other,
141 format!(
142 "Failed to LoadLibraryExA {}, error {}",
143 lib_file_name,
144 Error::last_os_error()
145 ),
146 ));
147 };
148
149 // load functions
150 s.mag_initialize_func = Some(std::mem::transmute(Self::load_func(
151 s.lib_handle,
152 "MagInitialize",
153 )?));
154 s.mag_uninitialize_func = Some(std::mem::transmute(Self::load_func(
155 s.lib_handle,
156 "MagUninitialize",
157 )?));
158 s.set_window_source_func = Some(std::mem::transmute(Self::load_func(
159 s.lib_handle,
160 "MagSetWindowSource",
161 )?));
162 s.set_window_filter_list_func = Some(std::mem::transmute(Self::load_func(
163 s.lib_handle,
164 "MagSetWindowFilterList",
165 )?));
166 s.set_image_scaling_callback_func = Some(std::mem::transmute(Self::load_func(
167 s.lib_handle,
168 "MagSetImageScalingCallback",
169 )?));
170
171 // MagInitialize
172 if let Some(init_func) = s.mag_initialize_func {
173 if FALSE == init_func() {
174 return Err(Error::new(
175 ErrorKind::Other,

Callers

nothing calls this directly

Calls 1

is_nullMethod · 0.45

Tested by

no test coverage detected