| |
| |
| |
| |
| |
| |
| #include <psxtypes/psxtypes.h> |
| #include <ntapi/nt_ldr.h> |
| #include <ntapi/ntapi.h> |
| #include "ntapi_impl.h" |
| |
| int32_t __stdcall __ntapi_ldr_load_system_dll( |
| __in void * hsysdir __optional, |
| __in wchar16_t * base_name, |
| __in uint16_t base_name_size, |
| __in uint32_t * image_flags __optional, |
| __out void ** image_base) |
| { |
| int32_t status; |
| wchar16_t * sysdir; |
| nt_unicode_string nt_sysdir; |
| nt_unicode_string nt_image_name; |
| uintptr_t buffer[0x80]; |
| |
| (void)image_flags; |
| |
| |
| __ntapi->tt_aligned_block_memset( |
| buffer,0,sizeof(buffer)); |
| |
| sysdir = (wchar16_t *)buffer; |
| |
| if ((status = __ntapi->tt_get_system_directory_dos_path( |
| hsysdir, |
| sysdir,sizeof(buffer), |
| 0,0,&nt_sysdir))) |
| return status; |
| |
| nt_image_name.strlen = base_name_size; |
| nt_image_name.maxlen = base_name_size; |
| nt_image_name.buffer = base_name; |
| |
| return __ntapi->ldr_load_dll( |
| sysdir,0, |
| &nt_image_name, |
| image_base); |
| } |