@@ -16,7 +16,7 @@ const DISMAPI_E_UNKNOWN_FEATURE: i32 = 0x800F080Cu32 as i32;
1616const LOAD_LIBRARY_SEARCH_SYSTEM32 : u32 = 0x0000_0800 ;
1717
1818#[ link( name = "kernel32" ) ]
19- extern "system" {
19+ unsafe extern "system" {
2020 fn LoadLibraryExW (
2121 lpLibFileName : * const u16 ,
2222 hFile : * mut c_void ,
@@ -77,7 +77,7 @@ type DismShutdownFn = unsafe extern "system" fn() -> i32;
7777type DismDeleteFn = unsafe extern "system" fn ( * const c_void ) -> i32 ;
7878
7979// Kernel32 functions for dynamic loading
80- extern "system" {
80+ unsafe extern "system" {
8181 fn GetProcAddress ( h_module : * mut c_void , lp_proc_name : * const u8 ) -> * mut c_void ;
8282 fn FreeLibrary ( h_lib_module : * mut c_void ) -> i32 ;
8383}
@@ -93,18 +93,22 @@ unsafe fn from_wide_ptr(ptr: *const u16) -> String {
9393 if ptr. is_null ( ) {
9494 return String :: new ( ) ;
9595 }
96- let len = ( 0 ..65536 ) . take_while ( |& i| * ptr. add ( i) != 0 ) . count ( ) ;
97- let slice = std:: slice:: from_raw_parts ( ptr, len) ;
98- String :: from_utf16_lossy ( slice)
96+ unsafe {
97+ let len = ( 0 ..65536 ) . take_while ( |& i| * ptr. add ( i) != 0 ) . count ( ) ;
98+ let slice = std:: slice:: from_raw_parts ( ptr, len) ;
99+ String :: from_utf16_lossy ( slice)
100+ }
99101}
100102
101103unsafe fn load_fn < T > ( lib : * mut c_void , name : & [ u8 ] ) -> Result < T , String > {
102- let ptr = GetProcAddress ( lib, name. as_ptr ( ) ) ;
103- if ptr. is_null ( ) {
104- let fn_name = std:: str:: from_utf8 ( & name[ ..name. len ( ) - 1 ] ) . unwrap_or ( "?" ) ;
105- return Err ( t ! ( "dism.functionNotFound" , name = fn_name) . to_string ( ) ) ;
104+ unsafe {
105+ let ptr = GetProcAddress ( lib, name. as_ptr ( ) ) ;
106+ if ptr. is_null ( ) {
107+ let fn_name = std:: str:: from_utf8 ( & name[ ..name. len ( ) - 1 ] ) . unwrap_or ( "?" ) ;
108+ return Err ( t ! ( "dism.functionNotFound" , name = fn_name) . to_string ( ) ) ;
109+ }
110+ Ok ( std:: mem:: transmute_copy ( & ptr) )
106111 }
107- Ok ( std:: mem:: transmute_copy ( & ptr) )
108112}
109113
110114struct DismApi {
0 commit comments