Difference between revisions of "SceSdstor"

From Vita Development Wiki
Jump to navigation Jump to search
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:

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();