SceSdif is a kernel module that is primary responsible for communicating with SD devices. This includes onboard eMMC, game card MMC, wi-fi/bluetooth SDIO devices.
To communicate with particular device SceSdif module uses device index (sd_ctx_index)
Device Index
|
Type
|
Description
|
0
|
MMC
|
onboard eMMC
|
1
|
MMC
|
game card
|
2
|
SDIO
|
wi-fi/bluetooth
|
Module
Known NIDs
Version |
Name |
World |
Privilege |
NID
|
1.69 |
SceSdif |
Non-secure |
Kernel |
0xCA882EE3
|
3.60 |
SceSdif |
? |
Kernel |
0x2E7C52F7
|
Libraries
Known NIDs
SceSdifForDriver
typedef struct output_23a4ef01
{
int unk_0;
int unk_4;
int unk_8;
int unk_C;
};
typedef struct output_24
{
int unk_0;
int unk_4;
int unk_8;
int unk_C;
int unk_10;
char unk_14;
char unk_15;
char unk_16;
char unk_17;
int unk_18;
int unk_1C;
int unk_20;
int unk_24;
};
typedef struct output_76d2b87b
{
int unk_0;
int unk_4;
short unk_8;
};
typedef struct cmd_input
{
int size; //0x240
int unk_4;
int command;
int argument;
char data0[0x50];
cmd_input* next_cmd;
int unk_64;
int unk_68;
int unk_6C;
int unk_70;
int unk_74;
sd_context_global* gctx_ptr;
int unk_7C;
char data1[0x1C0];
};
typedef struct sd_context_data // size is 0xC0
{
cmd_input* cmd_ptr;
cmd_input* cmd_ptr_next;
int unk_8;
int unk_C;
int sd_index;
sd_context_part* ctx;
int unk_18;
int unk_1C;
char data[0xA0];
};
typedef struct sd_context_part // size is currently unknown
{
sd_context_global* gctx_ptr;
...
};
typedef struct sd_context_global // size is 0x24C0
{
cmd_input commands[16];
sd_context_data ctx_data;
};
module_start
Version |
NID
|
3.60 |
0x935cd196
|
int module_start();
init
Version |
NID
|
3.60 |
0x0eb0ef86
|
int init();
deinit
Version |
NID
|
3.60 |
0xe5e5f42e
|
int deinit();
return_error
Version |
NID
|
3.60 |
0x235ad556
|
int return_error();
enable_slow_mode
Version |
NID
|
3.60 |
0xf37cf8e5
|
int enable_slow_mode();
get_card_insert_state1
Version |
NID
|
3.60 |
0x36a2b01b
|
int get_card_insert_state1(int sd_ctx_index);
get_card_insert_state2
Version |
NID
|
3.60 |
0xfd9e5cfa
|
int get_card_insert_state2(int sd_ctx_index);
gc_cmd56_response
Version |
NID
|
3.60 |
0x134e06c4
|
int gc_cmd56_response(sd_context_part* ctx, char* buffer, int length);
gc_cmd56_request
Version |
NID
|
3.60 |
0xb0996641
|
int gc_cmd56_request(sd_context_part* ctx, char* buffer, int length);
get_sd_context_global
Version |
NID
|
3.60 |
0xdc8f52f8
|
sd_context_global* get_sd_context_global(int sd_ctx_index);
get_sd_context_part_emmc
Version |
NID
|
3.60 |
0x6a71987f
|
sd_context_part* get_sd_context_part_emmc(int sd_ctx_index);
get_sd_context_part_game_cart
Version |
NID
|
3.60 |
0xb9ea5b1e
|
sd_context_part* get_sd_context_part_game_cart(int sd_ctx_index);
get_sd_context_part_wlan_bt
Version |
NID
|
3.60 |
0x6a8235fc
|
sd_context_part* get_sd_context_part_wlan_bt(int sd_ctx_index);
initialize_sd_context_part
Version |
NID
|
3.60 |
0x22c82e79
|
int initialize_sd_context_part(int sd_ctx_index, sd_context_part** result);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x3428884d
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xe80293ef
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xd0f78d9b
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num0, int num1, void* unk2, int num3);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x3c4cdc8b
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num0, int num1, void* unk2, int num3);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x733bc373
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xdece963b
|
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num0, int num1, void* unk2);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x5d65e66b
|
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num0, int num1, void* unk2);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xbc45c83d
|
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num);
wlan_bt_cmd3_cmd52_sdio
Version |
NID
|
3.60 |
0xaabaa0f0
|
int wlan_bt_cmd3_cmd52_sdio(int sd_ctx_index, sd_context_part** ctx);
wlan_bt
Version |
NID
|
3.60 |
0x855c95e1
|
int wlan_bt(wlan_context* wlan_ctx, void* unk0, void* unk1);
wlan_bt
Version |
NID
|
3.60 |
0x0c66e36f
|
int wlan_bt(sd_context_part* ctx, void* unk0);
wlan_bt
Version |
NID
|
3.60 |
0xab0222f2
|
int wlan_bt(sd_context_part* ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x55baeb2d
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xfe6f3e7b
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xf1a24edd
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x1847b18c
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0xd3c1e2b6
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int unk0, int unk1, int unk2);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x5bac6e70
|
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int unk0, int unk1, int unk2);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x01e8eb6c
|
int wlan_bt_cmd52_sdio(sd_context_part* ctx, char* output, int destLength_100);
wlan_bt_cmd52_sdio
Version |
NID
|
3.60 |
0x763f1075
|
int wlan_bt_cmd52_sdio(sd_context_part* ctx);
wlan_bt_cmd3_cmd52_sdio
Version |
NID
|
3.60 |
0x53962379
|
int wlan_bt_cmd3_cmd52_sdio(int sd_ctx_index);
wlan_bt_cmd0
Version |
NID
|
3.60 |
0x3b6ab29e
|
int wlan_bt_cmd0(wlan_context* wlan_ctx, void* unk0, int* result);
wlan_bt_cmd0_cmd52_sdio
Version |
NID
|
3.60 |
0x180e7395
|
int wlan_bt_cmd0_cmd52_sdio(wlan_context* wlan_ctx, char* output, int destLength_100);
wlan_bt
Version |
NID
|
3.60 |
0x0f157f49
|
int wlan_bt(wlan_context* wlan_ctx);
wlan_bt
Version |
NID
|
3.60 |
0x849e3216
|
int wlan_bt(wlan_context* wlan_ctx);
wlan_bt
Version |
NID
|
3.60 |
0xb05eff68
|
int wlan_bt(wlan_context *wlan_ctx, int unk0);
sdstor_read_sector_async
Version |
NID
|
3.60 |
0x6f8d529b
|
int sdstor_read_sector_async(sd_context_part* ctx, int sector, char* buffer, int nSectors);
sdstor_read_sector
Version |
NID
|
3.60 |
0xb9593652
|
int sdstor_read_sector(sd_context_part* ctx, int sector, char* buffer, int nSectors);
sdstor_write_sector_async
Version |
NID
|
3.60 |
0x175543d2
|
int sdstor_write_sector_async(sd_context_part* ctx, int sector, char* buffer, int mode);
sdstor_write_sector
Version |
NID
|
3.60 |
0xe0781171
|
int sdstor_write_sector(sd_context_part* ctx, int sector, char* buffer, int mode);
sdstor_copy_ctx
Version |
NID
|
3.60 |
0x23a4ef01
|
int sdstor_copy_ctx(sd_context_part* ctx, output_23a4ef01* unk0);
sdstor_cmd0
Version |
NID
|
3.60 |
0x6cc8e28d
|
int sdstor_cmd0(int sd_ctx_index);
sdstor_cmd32_cmd33_cmd38_sdio
Version |
NID
|
3.60 |
0x35ba9df8
|
int sdstor_cmd32_cmd33_cmd38_sdio(int sd_ctx_index, int unk0);
sdstor_cmd0_cmd2_cmd3_cmd5_sdio_cmd6
Version |
NID
|
3.60 |
0xc1271539
|
int sdstor_cmd0_cmd2_cmd3_cmd5_sdio_cmd6(int sd_ctx_index, int* result);
sdstor_cmd6_cmd30
Version |
NID
|
3.60 |
0x995748ea
|
int sdstor_cmd6_cmd30(sd_context_part *input, int unk0, int unk1, void *unk2);
sdstor
Version |
NID
|
3.60 |
0xe091ba2e
|
int sdstor(sd_context_part* unk, int unk0, int unk1, int* unk2);
sdif_write
Version |
NID
|
3.60 |
0x60642f49
|
int sdif_write(sd_context_part *ctx, int unk0, int unk1);
sdif_write
Version |
NID
|
3.60 |
0x0203ecdc
|
int sdif_write(sd_context_part *ctx, int unk0, int unk1);
sdif
Version |
NID
|
3.60 |
0x29a71e7f
|
int sdif();
sdif_cmd0
Version |
NID
|
3.60 |
0x53518827
|
int sdif_cmd0(sd_context_global *ctx, int *result);
sdif_cmd0
Version |
NID
|
3.60 |
0x475d8e45
|
int sdif_cmd0(int sd_ctx_index);
sdif
Version |
NID
|
3.60 |
0x3df7e207
|
int sdif(int sd_ctx_index, output_24* result);
sdif
Version |
NID
|
3.60 |
0x76d2b87b
|
int sdif(int sd_ctx_index, output_76d2b87b* result);
sdif
Version |
NID
|
3.60 |
0xb83f7518
|
int sdif(int sd_ctx_index, output_24* result);
sdif
Version |
NID
|
3.60 |
0xb32776c7
|
int sdif(sd_context_part* ctx, int num_200);
sdif
Version |
NID
|
3.60 |
0xaf702fe7
|
int sdif(sd_context_part* ctx, int num_200);