BOSSU:GetNsDataIdList

BOSSU:GetNsDataIdList

Request #

WordDescription
0
0x00100102Cmd0x0010Param4Xlat2
1u32, Filter
2u32, Number of entries that the list can hold (max entries)
3u16, Starting index in the internal NS Data ID list
4u32, Starting NS Data ID
5Descriptor for mapping a write-only buffer in the target process
6Output NS Data ID list

Response #

WordDescription
0
0x001000C2Cmd0x0010Param3Xlat2
1Result code
2u16, Actual number of output entries
3u16, Last index copied to output in the internal NS Data ID list
4Descriptor for mapping a write-only buffer in the target process
5Output NS Data ID list

Description #

Writes an array of NS Data ID entries (u32) for the program ID of the current session to the output buffer using the provided filters.

This eventually calls a function with the following type parameters: 0, 1, 1. This function doesn’t use the second type parameter. Afterwards another function is called using the program ID.

Filter #

Content filtering is enabled when this word isn’t 0xFFFFFFFF. This is only used for the following: if (filterword_u16high != contentdatatype_u16high || (filterword_u16low & contentdatatype_u16low) == 0) continue; Hence, filterword_u16high must match contentdatatype_u16high, and the bitmask specified by filterword_u16low must be non-zero in contentdatatype_u16low. The contentdatatype is extracted from the extdata filename, which originates from the BOSS-container. The NS Data ID for the content entry is only written to the output when processing isn’t skipped due to filtering.

Start NsDataId #

This field is only used when the starting index is non-zero or when this field is non-zero.

The NS Data ID at the specified starting index must match this field, otherwise error 0xD840F846 is returned. It will then skip normal content entry processing for this matching entry (cur_wordindex is field is increased by 0x1 before starting the content entry processing loop).