M
Membre supprimé 2
Invité
Bonjour,
Je suis en train d'écrire un petit programme sous MacOS X afin d'éjecter un CD audio en appuyant sur une touche du clavier.
C'est donc un programme simple, et je pense alors à ca :
- Créer un projet Cocoa avec Project Builder (je veux faire du Cocoa et non carbon), qui éjectera le CD dès lors que l'utilisateur appuyera sur une touche du clavier.
Je pars donc à la recherche de la fonction voulue (éjection du CD) contenue dans un des frameworks. Il semblerait que le framework "Kernel" soit intéressant. Il contient les en-têtes suivants :
IOCDDrive.h
IOCDDriveNub.h
IOCDMedia.h
IOCDTypes.h
De plus l'en-tête IOCDDrive.h contient une fonction appelée ejectMedia().
1er difficulté...
Les en-têtes sont écris en C++, certains frameworks en ObjectiveC d'autres en C, quelle language choisir ?
2eme, 3eme, 4eme difficulté...
J'ai lu plusieurs documentations sur le sîte d'Apple : "Kernel Environment", "Project Builder"..., pour avoir plus d'informations, et aussi pour m'éclairer un peu plus, notamment pour choisir le bon projet à créer (dans Project Builder).
Quel genre de projet créer dans mon cas ? Cocoa, Kernel Extension, C++ Tool... ?
J'ai un petit doute. De plus quand je lis la doc d'Apple il est dit qu'une application peut soti tourner dans le User Space ou dans le Kernel Space. Ce que je conçoit tout a fait afin de préserver la robustesse du Système. Mais alors est-ce que m'a fonction ejectMedia est OK au niveau User Space ?
De plus comment savoir si telle ou telle fonction est utilisable dans le User Space ?
Je pense que le framework IOKIT est utilisable pour une application qui s'executerait dans le Kernel Space comme un driver, mais comment en être sûr ?
Je pense que si je veux créer une application qui s'exécuterait dans le Kernel Space, elle doît-être une extension (KEXT) ou un module (KMOD), est-ce vrai ?
J'ai lu aussi qu'avec le mécanisme des Bundle et des CFPlugIn on pouvait adjoindre des fonctionnalités aux Frameworks. Quelqu'un a t'il des infos ?
J'ai vu aussi qu'il était possible de communiquer avec un programme s'exécutant dans le Kernel Space grace à un mécanisme appelé User Client. Il est aussi dit que le programme User Client est linké avec un CFPlugin ou une librairie. Quelqu'un a t'il de la doc sur la création d'un "User Client" ?
Puis pour finir voilà ce que j'ai fait :
1- Création d'un projet Cocoa
2- J'ai inclus Krnel.framework -> #include <Kernel/IOKit/storage/IOCDDrive.h>
3- Compilation... 3 tonnes d'erreurs !!!
header file 'IOKit/storage/IOCDTypes.h' not found
header file 'IOKit/storage/IOHDDrive.h' not found
undefined type, found `class'
undefined type, found `public'
undefined type, found `virtual'
undefined type, found `OSDictionary'
...
Avez vous une idée ?
Voilà toutes les questions que je me pose. Si quelqu'un a une réponse à l'une d'elles, n'hésitez pas...
Une petite en plus, comment je récupère les évènements clavier de façon global ?
Merci pour l'aide et Bonne Année.
Fils de Pierrot.
Je suis en train d'écrire un petit programme sous MacOS X afin d'éjecter un CD audio en appuyant sur une touche du clavier.
C'est donc un programme simple, et je pense alors à ca :
- Créer un projet Cocoa avec Project Builder (je veux faire du Cocoa et non carbon), qui éjectera le CD dès lors que l'utilisateur appuyera sur une touche du clavier.
Je pars donc à la recherche de la fonction voulue (éjection du CD) contenue dans un des frameworks. Il semblerait que le framework "Kernel" soit intéressant. Il contient les en-têtes suivants :
IOCDDrive.h
IOCDDriveNub.h
IOCDMedia.h
IOCDTypes.h
De plus l'en-tête IOCDDrive.h contient une fonction appelée ejectMedia().
1er difficulté...
Les en-têtes sont écris en C++, certains frameworks en ObjectiveC d'autres en C, quelle language choisir ?
2eme, 3eme, 4eme difficulté...
J'ai lu plusieurs documentations sur le sîte d'Apple : "Kernel Environment", "Project Builder"..., pour avoir plus d'informations, et aussi pour m'éclairer un peu plus, notamment pour choisir le bon projet à créer (dans Project Builder).
Quel genre de projet créer dans mon cas ? Cocoa, Kernel Extension, C++ Tool... ?
J'ai un petit doute. De plus quand je lis la doc d'Apple il est dit qu'une application peut soti tourner dans le User Space ou dans le Kernel Space. Ce que je conçoit tout a fait afin de préserver la robustesse du Système. Mais alors est-ce que m'a fonction ejectMedia est OK au niveau User Space ?
De plus comment savoir si telle ou telle fonction est utilisable dans le User Space ?
Je pense que le framework IOKIT est utilisable pour une application qui s'executerait dans le Kernel Space comme un driver, mais comment en être sûr ?
Je pense que si je veux créer une application qui s'exécuterait dans le Kernel Space, elle doît-être une extension (KEXT) ou un module (KMOD), est-ce vrai ?
J'ai lu aussi qu'avec le mécanisme des Bundle et des CFPlugIn on pouvait adjoindre des fonctionnalités aux Frameworks. Quelqu'un a t'il des infos ?
J'ai vu aussi qu'il était possible de communiquer avec un programme s'exécutant dans le Kernel Space grace à un mécanisme appelé User Client. Il est aussi dit que le programme User Client est linké avec un CFPlugin ou une librairie. Quelqu'un a t'il de la doc sur la création d'un "User Client" ?
Puis pour finir voilà ce que j'ai fait :
1- Création d'un projet Cocoa
2- J'ai inclus Krnel.framework -> #include <Kernel/IOKit/storage/IOCDDrive.h>
3- Compilation... 3 tonnes d'erreurs !!!
header file 'IOKit/storage/IOCDTypes.h' not found
header file 'IOKit/storage/IOHDDrive.h' not found
undefined type, found `class'
undefined type, found `public'
undefined type, found `virtual'
undefined type, found `OSDictionary'
...
Avez vous une idée ?
Voilà toutes les questions que je me pose. Si quelqu'un a une réponse à l'une d'elles, n'hésitez pas...
Une petite en plus, comment je récupère les évènements clavier de façon global ?
Merci pour l'aide et Bonne Année.
Fils de Pierrot.