mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 04:22:50 +02:00
90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
/**
|
|
* @file ldr.h
|
|
* @brief Loader (ldr*) service IPC wrapper.
|
|
* @author SciresM
|
|
* @copyright libnx Authors
|
|
*/
|
|
#pragma once
|
|
#include "../types.h"
|
|
#include "../sf/service.h"
|
|
#include "../services/ncm_types.h"
|
|
|
|
typedef struct {
|
|
u8 main_thread_priority;
|
|
u8 default_cpu_id;
|
|
u16 application_type;
|
|
u32 main_thread_stack_size;
|
|
u64 program_id;
|
|
u32 acid_sac_size;
|
|
u32 aci0_sac_size;
|
|
u32 acid_fac_size;
|
|
u32 aci0_fah_size;
|
|
u8 ac_buffer[0x3E0];
|
|
} LoaderProgramInfoV1;
|
|
|
|
typedef struct {
|
|
u8 main_thread_priority;
|
|
u8 default_cpu_id;
|
|
u16 application_type;
|
|
u32 main_thread_stack_size;
|
|
u64 program_id;
|
|
u32 acid_sac_size;
|
|
u32 aci0_sac_size;
|
|
u32 acid_fac_size;
|
|
u32 aci0_fah_size;
|
|
u8 unused_20[0x10];
|
|
u8 ac_buffer[0x3E0];
|
|
} LoaderProgramInfo;
|
|
|
|
typedef struct {
|
|
u8 build_id[0x20];
|
|
u64 base_address;
|
|
u64 size;
|
|
} LoaderModuleInfo;
|
|
|
|
typedef struct {
|
|
u8 platform; ///< NcmContentMetaPlatform
|
|
u8 content_attributes; ///< FsContentAttributes
|
|
} LoaderProgramAttributes;
|
|
|
|
/// Initialize ldr:shel.
|
|
Result ldrShellInitialize(void);
|
|
|
|
/// Exit ldr:shel.
|
|
void ldrShellExit(void);
|
|
|
|
/// Gets the Service object for the actual ldr:shel service session.
|
|
Service* ldrShellGetServiceSession(void);
|
|
|
|
/// Initialize ldr:dmnt.
|
|
Result ldrDmntInitialize(void);
|
|
|
|
/// Exit ldr:dmnt.
|
|
void ldrDmntExit(void);
|
|
|
|
/// Gets the Service object for the actual ldr:dmnt service session.
|
|
Service* ldrDmntGetServiceSession(void);
|
|
|
|
/// Initialize ldr:pm.
|
|
Result ldrPmInitialize(void);
|
|
|
|
/// Exit ldr:pm.
|
|
void ldrPmExit(void);
|
|
|
|
/// Gets the Service object for the actual ldr:pm service session.
|
|
Service* ldrPmGetServiceSession(void);
|
|
|
|
Result ldrShellSetProgramArguments(u64 program_id, const void *args, size_t args_size);
|
|
Result ldrShellFlushArguments(void);
|
|
|
|
Result ldrDmntSetProgramArguments(u64 program_id, const void *args, size_t args_size);
|
|
Result ldrDmntFlushArguments(void);
|
|
Result ldrDmntGetProcessModuleInfo(u64 pid, LoaderModuleInfo *out_module_infos, size_t max_out_modules, s32 *num_out);
|
|
|
|
Result ldrPmCreateProcess(u64 pin_id, u32 flags, Handle reslimit_h, const LoaderProgramAttributes *attrs, Handle *out_process_h);
|
|
Result ldrPmGetProgramInfo(const NcmProgramLocation *loc, const LoaderProgramAttributes *attrs, LoaderProgramInfo *out_program_info); ///< [19.0.0+/Atmosphere]
|
|
Result ldrPmGetProgramInfoV1(const NcmProgramLocation *loc, LoaderProgramInfoV1 *out_program_info); ///< [1.0.0-18.1.0/Non-Atmosphere]
|
|
Result ldrPmPinProgram(const NcmProgramLocation *loc, u64 *out_pin_id);
|
|
Result ldrPmUnpinProgram(u64 pin_id);
|
|
Result ldrPmSetEnabledProgramVerification(bool enabled); ///< [10.0.0+]
|