SceSdstor: Difference between revisions
Jump to navigation
Jump to search
(→Types) |
|||
Line 31: | Line 31: | ||
<source lang="c"> | <source lang="c"> | ||
typedef struct partition_entry //size is 0x1C | |||
{ | |||
uint32_t partitionOffset; | |||
uint32_t partitionSize; | |||
sdstor_mbr_ctx* ctx; | |||
void* partitionEntryPtr; //pointer to partition entry in MBR | |||
char* numericName; //null terminated name (000, 001, ...) | |||
unt8_t flags1; | |||
unt8_t flags2; | |||
uint16_t unk1; | |||
uint32_t unk2; | |||
}partition_entry; | |||
typedef struct sdstor_mbr_ctx //size is 0x238 | typedef struct sdstor_mbr_ctx //size is 0x238 | ||
{ | { |
Revision as of 16:00, 22 February 2017
Module
SceSdstor module does not export any functions exсept module_start.
This module is responsible for initializing all storage devices. This includes:
- eMMC
- Game gard
- Memory card
- Usb Mass Storage (unknown SceUsbMassForDriver)
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceSdstor | Non-secure | Kernel | 0x5804A397 |
3.60 | SceSdstor | ? | Kernel | 0xD7FBAE7C |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|
Types
typedef struct partition_entry //size is 0x1C { uint32_t partitionOffset; uint32_t partitionSize; sdstor_mbr_ctx* ctx; void* partitionEntryPtr; //pointer to partition entry in MBR char* numericName; //null terminated name (000, 001, ...) unt8_t flags1; unt8_t flags2; uint16_t unk1; uint32_t unk2; }partition_entry; typedef struct sdstor_mbr_ctx //size is 0x238 { uint8_t unk_0[0x50]; uint32_t unk_50; void* mbr_ptr; //pointer to corresponding MBR record in array (offset 0x40) uint32_t unk_58; uint32_t unk_5C; uint8_t unk_60[0x1D8]; }sdstor_mbr_ctx; //named after "SceSdStorDevice" mutex typedef struct sd_stor_device //size is 0x54 { int unk_0; int unk_4; int unk_8; int unk_C; int unk_10; int unk_14; int unk_18; int unk_1C; int unk_20; int unk_24; int unk_28; int unk_2C; int unk_30; int unk_34; int unk_38; int unk_3C; char index1; // (0x00, 0x01, 0xFF, 0xFF, 0x03) char index2; // (0x00, 0x00, 0x02, 0x03, 0x01) char unk_42; char unk_43; int unk_44; int unk_48; int unk_4C; int unk_50; }sd_stor_device;
Data segment layout
Address | Size | Description |
---|---|---|
0x0000 | 0x40 | unknown |
0x0040 | 0x200 | MBR of eMMC |
0x0240 | 0x200 | MBR of Game gard |
0x0440 | 0x200 | MBR of Memory card |
0x0640 | 0x200 | unknown (most likely for MBR since there are 5 elements in all arrays) |
0x0840 | 0x200 | unknown (most likely for MBR since there are 5 elements in all arrays) |
0x0A40 | 0x238 | sdstor_mbr_ctx element 0 |
0x0C78 | 0x238 | sdstor_mbr_ctx element 1 |
0x0EB0 | 0x238 | sdstor_mbr_ctx element 2 |
0x10E8 | 0x238 | sdstor_mbr_ctx element 3 |
0x1320 | 0x238 | sdstor_mbr_ctx element 4 |
0x1558 | 0x54 | sd_stor_device element 0 |
0x15AC | 0x54 | sd_stor_device element 1 |
0x1600 | 0x54 | sd_stor_device element 2 |
0x1654 | 0x54 | sd_stor_device element 3 |
0x16A8 | 0x54 | sd_stor_device element 4 |
0x16FC | 0x20 | vfs_add_data sdstor_dev_fs node
|
0x171C | 0x04 | SceUID of mempool "SceSdStorVfs" of size 0x2000 |
0x1720 | 0x200 | unknown (gcd-lp-act-mediaid ?) |
0x1920 | 0x200 | unknown (mcd-lp-act-mediaid ?) |
0x1B20 | 0xB4 | array of 5 structures of size 0x24 |
0x1BD4 | 0x1C | unknown |
0x1BF0 | 0x3C | array of 5 structures of size 0xC |
0x1C2C | 0x8C | array of 5 structures of size 0x1C |
0x1CB8 | 0x8 | unknown |
0x1CC0 | 0x200 | MBR of Game gard |
SceSdstor
module_start
Version | NID |
---|---|
3.60 | 0x935cd196 |
int module_start();