mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 04:11:18 +00:00
ns_mitm: update to support new 19.0.0 command
This commit is contained in:
parent
624f8d0d8d
commit
77d239265d
5 changed files with 40 additions and 4 deletions
|
@ -84,6 +84,7 @@ namespace ams::hos {
|
||||||
Version_17_0_1 = ::ams::TargetFirmware_17_0_1,
|
Version_17_0_1 = ::ams::TargetFirmware_17_0_1,
|
||||||
Version_18_0_0 = ::ams::TargetFirmware_18_0_0,
|
Version_18_0_0 = ::ams::TargetFirmware_18_0_0,
|
||||||
Version_18_1_0 = ::ams::TargetFirmware_18_1_0,
|
Version_18_1_0 = ::ams::TargetFirmware_18_1_0,
|
||||||
|
Version_19_0_0 = ::ams::TargetFirmware_19_0_0,
|
||||||
|
|
||||||
Version_Current = ::ams::TargetFirmware_Current,
|
Version_Current = ::ams::TargetFirmware_Current,
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,29 @@ static Result _nsGetApplicationContentPath(Service *s, void* out, size_t out_siz
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Result _nsGetApplicationContentPath2(Service *s, void* out_path, size_t out_size, u64* out_program_id, u8 *out_attr, u64 app_id, NcmContentType content_type) {
|
||||||
|
const struct {
|
||||||
|
u8 content_type;
|
||||||
|
u64 app_id;
|
||||||
|
} in = { content_type, app_id };
|
||||||
|
|
||||||
|
struct {
|
||||||
|
u8 attr;
|
||||||
|
u64 program_id;
|
||||||
|
} out;
|
||||||
|
|
||||||
|
Result rc = serviceDispatchInOut(s, 2524, in, out,
|
||||||
|
.buffer_attrs = { SfBufferAttr_HipcMapAlias | SfBufferAttr_Out },
|
||||||
|
.buffers = { { out_path, out_size } },
|
||||||
|
);
|
||||||
|
if (R_SUCCEEDED(rc)) {
|
||||||
|
*out_program_id = out.program_id;
|
||||||
|
*out_attr = out.attr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
static Result _nsResolveApplicationContentPath(Service* s, u64 app_id, NcmContentType content_type) {
|
static Result _nsResolveApplicationContentPath(Service* s, u64 app_id, NcmContentType content_type) {
|
||||||
const struct {
|
const struct {
|
||||||
u8 content_type;
|
u8 content_type;
|
||||||
|
@ -93,6 +116,10 @@ Result nswebGetRunningApplicationProgramId(NsDocumentInterface* doc, u64* out_pr
|
||||||
return _nsGetRunningApplicationProgramId(&doc->s, out_program_id, app_id);
|
return _nsGetRunningApplicationProgramId(&doc->s, out_program_id, app_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result nswebGetApplicationContentPath2(NsDocumentInterface* doc, void* out, size_t out_size, u64* out_program_id, u8 *out_attr, u64 app_id, NcmContentType content_type) {
|
||||||
|
return _nsGetApplicationContentPath2(&doc->s, out, out_size, out_program_id, out_attr, app_id, content_type);
|
||||||
|
}
|
||||||
|
|
||||||
void nsDocumentInterfaceClose(NsDocumentInterface* doc) {
|
void nsDocumentInterfaceClose(NsDocumentInterface* doc) {
|
||||||
serviceClose(&doc->s);
|
serviceClose(&doc->s);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ Result nsamGetRunningApplicationProgramIdFwd(Service* s, u64* out_program_id, u6
|
||||||
Result nswebGetApplicationContentPath(NsDocumentInterface* doc, void* out, size_t out_size, u8 *out_attr, u64 app_id, NcmContentType content_type);
|
Result nswebGetApplicationContentPath(NsDocumentInterface* doc, void* out, size_t out_size, u8 *out_attr, u64 app_id, NcmContentType content_type);
|
||||||
Result nswebResolveApplicationContentPath(NsDocumentInterface* doc, u64 app_id, NcmContentType content_type);
|
Result nswebResolveApplicationContentPath(NsDocumentInterface* doc, u64 app_id, NcmContentType content_type);
|
||||||
Result nswebGetRunningApplicationProgramId(NsDocumentInterface* doc, u64* out_program_id, u64 app_id);
|
Result nswebGetRunningApplicationProgramId(NsDocumentInterface* doc, u64* out_program_id, u64 app_id);
|
||||||
|
Result nswebGetApplicationContentPath2(NsDocumentInterface* doc, void* out, size_t out_size, u64* out_program_id, u8 *out_attr, u64 app_id, NcmContentType content_type);
|
||||||
|
|
||||||
void nsDocumentInterfaceClose(NsDocumentInterface* doc);
|
void nsDocumentInterfaceClose(NsDocumentInterface* doc);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,11 @@ namespace ams::mitm::ns {
|
||||||
R_RETURN(nswebGetRunningApplicationProgramId(m_srv.get(), reinterpret_cast<u64 *>(out.GetPointer()), static_cast<u64>(application_id)));
|
R_RETURN(nswebGetRunningApplicationProgramId(m_srv.get(), reinterpret_cast<u64 *>(out.GetPointer()), static_cast<u64>(application_id)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Result NsDocumentService::GetApplicationContentPath2(const sf::OutBuffer &out_path, sf::Out<ncm::ProgramId> out_program_id, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type) {
|
||||||
|
static_assert(sizeof(*out_attr.GetPointer()) == sizeof(u8));
|
||||||
|
R_RETURN(nswebGetApplicationContentPath2(m_srv.get(), out_path.GetPointer(), out_path.GetSize(), reinterpret_cast<u64 *>(out_program_id.GetPointer()), reinterpret_cast<u8 *>(out_attr.GetPointer()), static_cast<u64>(application_id), static_cast<NcmContentType>(content_type)));
|
||||||
|
}
|
||||||
|
|
||||||
Result NsWebMitmService::GetDocumentInterface(sf::Out<sf::SharedPointer<impl::IDocumentInterface>> out) {
|
Result NsWebMitmService::GetDocumentInterface(sf::Out<sf::SharedPointer<impl::IDocumentInterface>> out) {
|
||||||
/* Open a document interface. */
|
/* Open a document interface. */
|
||||||
NsDocumentInterface doc;
|
NsDocumentInterface doc;
|
||||||
|
|
|
@ -18,10 +18,11 @@
|
||||||
|
|
||||||
#include "ns_shim.h"
|
#include "ns_shim.h"
|
||||||
|
|
||||||
#define AMS_NS_DOCUMENT_MITM_INTERFACE_INFO(C, H) \
|
#define AMS_NS_DOCUMENT_MITM_INTERFACE_INFO(C, H) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 21, Result, GetApplicationContentPath, (const sf::OutBuffer &out_path, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type), (out_path, out_attr, application_id, content_type)) \
|
AMS_SF_METHOD_INFO(C, H, 21, Result, GetApplicationContentPath, (const sf::OutBuffer &out_path, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type), (out_path, out_attr, application_id, content_type)) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 23, Result, ResolveApplicationContentPath, (ncm::ProgramId application_id, u8 content_type), (application_id, content_type)) \
|
AMS_SF_METHOD_INFO(C, H, 23, Result, ResolveApplicationContentPath, (ncm::ProgramId application_id, u8 content_type), (application_id, content_type)) \
|
||||||
AMS_SF_METHOD_INFO(C, H, 92, Result, GetRunningApplicationProgramId, (sf::Out<ncm::ProgramId> out, ncm::ProgramId application_id), (out, application_id), hos::Version_6_0_0)
|
AMS_SF_METHOD_INFO(C, H, 92, Result, GetRunningApplicationProgramId, (sf::Out<ncm::ProgramId> out, ncm::ProgramId application_id), (out, application_id), hos::Version_6_0_0) \
|
||||||
|
AMS_SF_METHOD_INFO(C, H, 2524, Result, GetApplicationContentPath2, (const sf::OutBuffer &out_path, sf::Out<ncm::ProgramId> out_program_id, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type), (out_path, out_program_id, out_attr, application_id, content_type), hos::Version_19_0_0)
|
||||||
|
|
||||||
AMS_SF_DEFINE_INTERFACE(ams::mitm::ns::impl, IDocumentInterface, AMS_NS_DOCUMENT_MITM_INTERFACE_INFO, 0x0F9B1C00)
|
AMS_SF_DEFINE_INTERFACE(ams::mitm::ns::impl, IDocumentInterface, AMS_NS_DOCUMENT_MITM_INTERFACE_INFO, 0x0F9B1C00)
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ namespace ams::mitm::ns {
|
||||||
Result GetApplicationContentPath(const sf::OutBuffer &out_path, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type);
|
Result GetApplicationContentPath(const sf::OutBuffer &out_path, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type);
|
||||||
Result ResolveApplicationContentPath(ncm::ProgramId application_id, u8 content_type);
|
Result ResolveApplicationContentPath(ncm::ProgramId application_id, u8 content_type);
|
||||||
Result GetRunningApplicationProgramId(sf::Out<ncm::ProgramId> out, ncm::ProgramId application_id);
|
Result GetRunningApplicationProgramId(sf::Out<ncm::ProgramId> out, ncm::ProgramId application_id);
|
||||||
|
Result GetApplicationContentPath2(const sf::OutBuffer &out_path, sf::Out<ncm::ProgramId> out_program_id, sf::Out<ams::fs::ContentAttributes> out_attr, ncm::ProgramId application_id, u8 content_type);
|
||||||
};
|
};
|
||||||
static_assert(impl::IsIDocumentInterface<NsDocumentService>);
|
static_assert(impl::IsIDocumentInterface<NsDocumentService>);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue