Ski-lleR Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 (modifié) Salut tous le monde Quand je me suis lancé dans le développement d'une solution de remplacement plus ou moins complète du dash de la 360, je me suis heurté à une grosse barrière : les périphériques ne sont pas accessible si facilement (aucune fonction documenté). A part le XLaunchNewImage pour lancer des xex qui est confiné à un disque virtuel, rien d'intéressant L'équipe à l'origine de XeXloader préfère garder son code fermé, c'est tout à son honneur. Alors pour ceux qui se lance dans le développement 360, voici une ébauche de code, vous donnant un accès total à tous les périphériques de stockage /* Liste des périphériques physiques "\\Device\\Flash" "\\Device\\Mu1" "\\Device\\Mu0" "\\Device\\Cdrom0" "\\Device\\Harddisk0\\Partition0" "\\Device\\Harddisk0\\Partition1" "\\Device\\Harddisk0\\Partition2" "\\Device\\Harddisk0\\Partition3" "\\Device\\Mass0" "\\Device\\Mass1" "\\Device\\Mass2" */ // Histoire de pas se prendre la tête #define DEVICE_NAND_FLASH 0 #define DEVICE_MEMORY_UNIT0 1 #define DEVICE_MEMORY_UNIT1 2 #define DEVICE_CDROM0 3 #define DEVICE_HARDISK0_PART0 4 #define DEVICE_HARDISK0_PART1 5 #define DEVICE_HARDISK0_PART2 6 #define DEVICE_HARDISK0_PART3 7 #define DEVICE_USB0 8 #define DEVICE_USB1 9 #define DEVICE_USB2 10 typedef struct _STRING { USHORT Length; USHORT MaximumLength; PCHAR Buffer; } STRING; extern "C" int __stdcall ObCreateSymbolicLink( STRING*, STRING*); extern "C" int __stdcall ObDeleteSymbolicLink( STRING* ); void Monter( int periphPhys, char* lettreLecteur ) { char lecteurCible[16]; sprintf_s( lecteurCible,"\\??\\%s", lettreLecteur ); char * periphOriginal; switch( periphPhys ) { case DEVICE_NAND_FLASH: periphOriginal = "\\Device\\Flash"; break; case DEVICE_MEMORY_UNIT0: periphOriginal = "\\Device\\Mu0"; break; case DEVICE_MEMORY_UNIT1: periphOriginal = "\\Device\\Mu1"; break; case DEVICE_CDROM0: periphOriginal = "\\Device\\Cdrom0"; break; case DEVICE_HARDISK0_PART0: periphOriginal = "\\Device\\Harddisk0\\Partition0"; break; case DEVICE_HARDISK0_PART1: periphOriginal = "\\Device\\Harddisk0\\Partition1"; break; case DEVICE_HARDISK0_PART2: periphOriginal = "\\Device\\Harddisk0\\Partition2"; break; case DEVICE_HARDISK0_PART3: periphOriginal = "\\Device\\Harddisk0\\Partition3"; break; case DEVICE_USB0: periphOriginal = "\\Device\\Mass0"; break; case DEVICE_USB1: periphOriginal = "\\Device\\Mass1"; break; case DEVICE_USB2: periphOriginal = "\\Device\\Mass2"; break; } STRING PeriphOriginal = { strlen( periphOriginal ), strlen( periphOriginal ) + 1, periphOriginal }; STRING LienSymbolique = { strlen( lecteurCible ), strlen( lecteurCible ) + 1, lecteurCible }; ObCreateSymbolicLink( &LienSymbolique, &PeriphOriginal ); } void Demonter( char* lettreLecteur ) { char lecteurCible[16]; sprintf_s( lecteurCible,"\\??\\%s", lettreLecteur ); STRING LienSymbolique = { strlen(lecteurCible), strlen(lecteurCible) + 1, lecteurCible }; ObDeleteSymbolicLink( &LienSymbolique ); } // On monte la partition qui contient la majorité des données (profil, jeux du live etc...) Monter(DEVICE_HARDISK0_PART1, "hdd1:"); // On test si ça marche bien en utilisant la fonction de lancement xex normallement limité. XLaunchNewImage("hdd1:\\xexalancer.xex", NULL); En espérant que ça permette de bonne avancer en matière de dévelopement. Modifié 19 décembre 2009 par Ski-lleR Lien vers le commentaire Partager sur d'autres sites More sharing options...
-Zou- Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 (modifié) Un grand Merci pour cette synthèse Question ne faut-il rien importer? Un "#include <xbdm.h>"? Modifié 19 décembre 2009 par -Zou- Lien vers le commentaire Partager sur d'autres sites More sharing options...
Ski-lleR Posté(e) 19 décembre 2009 Auteur Share Posté(e) 19 décembre 2009 C'est juste les fonctions toutes prêtes. Perso j'utilise seulement #include <xtl.h>, qui inclus la majorité des fichiers Lien vers le commentaire Partager sur d'autres sites More sharing options...
-Zou- Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 Une petite coquille s'est glissée : il manque "}" à la fin du switch. Lien vers le commentaire Partager sur d'autres sites More sharing options...
Ski-lleR Posté(e) 19 décembre 2009 Auteur Share Posté(e) 19 décembre 2009 Exact Lien vers le commentaire Partager sur d'autres sites More sharing options...
TheTool Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 salut, merci a toi meme si j'avais deja, maintenant tout le monde peux en profité ludo Lien vers le commentaire Partager sur d'autres sites More sharing options...
kogami Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 C'est quand même plus sympa de partager ces codes sources, plutôt que chacun garde ce genre d'info dans leur coin... Lien vers le commentaire Partager sur d'autres sites More sharing options...
Yelrac Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 Il faut savoir que tout et n'importe quoi peuvent être fait avec ce bout de code, il est notamment risqué de se promener dans la nand... Bref à ne pas mettre entre toutes les mains. Lien vers le commentaire Partager sur d'autres sites More sharing options...
80Y Posté(e) 19 décembre 2009 Share Posté(e) 19 décembre 2009 merci pour cette superbe contribution Lien vers le commentaire Partager sur d'autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant