Metagames


Précédent   Metagames > Univers Xbox > Xbox 360

Xbox 360 Console de salon, sortie en 2005 (Xbox 360), 2010 (Xbox 360 Slim)

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 19/12/2009, 16h44   #1 (permalink)
Profil
Membre
Ancienneté  85%
Ancienneté 85%
 
Avatar de Ski-lleR
 
Date d'inscription: mai 2006
Messages: 278
Téléchargements: 0
Uploads: 0
Merci: 0
Remercié 3 fois dans 3 Posts
Xbox360 [code Source] Accès Libre Aux Périphérique De La 360

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

Code:
/*
    
    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.
__________________
PSP 2.71 TA-082 To 3.52 M33-2 (Mutant moitié TA-082/TA-081 )

Le noob à dit: j'ai brické ma psp à cause de ce truc de m****
Le sage lui à répondu: quand on sait pas, on fait pas
Ski-lleR est déconnecté   Réponse avec citation
Cet utilisateur dit Merci à Ski-lleR pour ce poste utile:
yopo (20/12/2009)
Réponse
Précédent   Metagames > Univers Xbox > Xbox 360

Outils de la discussion
Modes d'affichage

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
code source vagans59 Playstation Portable 2 26/07/2006 13h26
code source de daxziso grigri Playstation Portable 3 11/07/2006 11h46
code source Invité Playstation Portable 0 14/09/2005 12h33
Log code source Invité Informatique 5 21/03/2005 22h02
Changer Code source Invité Points Divers 2 07/02/2004 21h04


Fuseau horaire GMT +1. Il est actuellement 19h52.


© 2003-2018 MetaGames. Tous droits réservés.