Jc/md/lp-01/05Driver élémentaire : présentation1 Driver élémentaire Émulateur Présentation.

Slides:



Advertisements
Présentations similaires
Génération de plate-forme
Advertisements

Cours n° 7 Standard Template Library II.
Dossier de présentation
Journées académiques Microsoft 2005
(Classes prédéfinies – API Java)
C.
Revision.
Jc/md/lp-01/05Communication inter processus1 Communication inter process Présentation.
Driver de port parallèle
Jc/md/lp-01/05TTY_IT : présentation1 TTY_IT Présentation.
Jc/md/lp-01/06Applications1 Émulateur. jc/md/lp-01/06Applications2 Objectif du chapitre Génération dapplications –WCE Console Application –WCE Application.
Jc/md/lp-01/05Essai ligne série COM1 : présentation1 Essai ligne série CEPC Application écho sur COM1 Présentation.
Gestion mémoire : présentation
Jc/md/lp-01/05gestion mémoire : corrigé1 Gestion mémoire Corrigé
Jc/md/lp-01/05Communication inter processus corrigé1 Communication inter process Corrigé
Driver UART en polling : présentation
Driver de port parallèle
Jc/md/lp-01/06Kernel Tracker1 Debugging Kernel Tracker.
Jc/md/lp-01/05Principe des drivers1 Généralités sur les drivers Présentation.
Jc/md/lp-01/05TTY_IT : corrigé1 TTY_IT Corrigé. jc/md/lp-01/05TTY_IT : corrigé2 Objectif du chapitre Proposer une solution pour les exercices suggérés.
Driver UART en polling : corrigé
Jc/md/lp-01/05Driver élémentaire : corrigé1 Driver élémentaire Émulateur Corrigé
Jc/md/lp-01/05Trains_presentation1 Threads et Synchronisation Application train Présentation.
Jc/md/lp-01/05Boot Loader1 BOOT LOADER. jc/md/lp-01/05Boot Loader2 Objectif du chapitre Introduire la notion de Boot Loader Donner un aperçu de lorganisation.
Jc/md/lp-01/05Trains_corrigé1 Threads et Synchronisation Application train Corrigé
FLSI602 Génie Informatique et Réseaux
Common Gateway Interface
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
Module 6 : Gestion de données à l'aide du système de fichiers NTFS
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
Fichiers et entrées / sorties Sauvegarde des programmes dans des fichiers. Compilation. Lecture et écriture de données dans des fichiers. Formatage des.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
SEANCE 10 Python Entrée et sortie de fichiers Lycée Louis Vincent Lundi 20 janvier
1 PROTOTYPE PGC++ Vecteur_3D DÉFINITION. 2 class Vecteur_3D { private : float vx, vy, vz, vw; // Représentation en coordonnées homogènes. public : Vecteur_3D();
Lau GatignonK12 Beam Project Presentation1 Proposition pour nouvelle expérience NA48/3 But: Recherche dun mode de desintégation rare de K + + Lexpérience.
15 septembre 2009B3 - Cours déquipements - Présentation1 Equipement - Baccalauréat 3 1.Technologies des installations techniques. 2. Visite dinstallations.
IFT 6800 Atelier en Technologies d’information
Chapitre 9 Les sous-programmes.
ÉLÉMENTS DE BASE UNIX.
Plan cours La notion de pointeur et d’adresse mémoire.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Exemple de gestion d'un buffer clavier en liste circulaire
VAL3 Ethernet - Sockets A partir VAL 3 Version 4.x.
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
La notion de type revisitée en POO
PHP 5° PARTIE : LES COOKIES
Un survol du language C.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Introduction à Visual Studio C++ (VC++)
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Entrées / Sorties.
Programmation Système et Réseau
Sif Cours 9 n 7. Communication série u Concepts généraux u Programmation des ports séries n Le matériel u Chapitre 10 CSA u Article dans MSDN: F.
Strings et Tableaux en Java
Les sockets.
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Function cas(uneNoteCCouCF){ laCellule.align="center"; uneNoteCCouCF=Number(uneNoteCCouCF); if(isNaN(uneNoteCCouCF)){ return "-"; } else { if(uneNoteCCouCF>=0){return.
Chapitre 9 Les caractères.
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
Algorithmique et langage C
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 4ème séance
Transcription de la présentation:

jc/md/lp-01/05Driver élémentaire : présentation1 Driver élémentaire Émulateur Présentation

jc/md/lp-01/05Driver élémentaire : présentation2 Objectif du chapitre Sous une plate-forme de type Industrial Controler préparer un driver « STR » capable de gérer un buffer en mémoire Écrire une chaîne de caractères en majuscules dans le buffer du driver par STR_Write Lire le buffer par STR_Read Modifier le buffer par des STR_IOControl (par exemple, passage majuscule/minuscule, cryptage) Renvoyer le buffer modifié

jc/md/lp-01/05Driver élémentaire : présentation3 Création du driver

jc/md/lp-01/05Driver élémentaire : présentation4 FileNew Project or File STRINGS_DRV CHOIX : dll

jc/md/lp-01/05Driver élémentaire : présentation5 Choix du projet

jc/md/lp-01/05Driver élémentaire : présentation6 Fichiers obtenus

jc/md/lp-01/05Driver élémentaire : présentation7 Fonctions du driver On créera les fonctions : STR_Init STR_Deinit STR_Open STR_Close STR_Read STR_Write STR_IOControl

jc/md/lp-01/05Driver élémentaire : présentation8 Création du fichier.def

jc/md/lp-01/05Driver élémentaire : présentation9 STRINGS_DRV.def LIBRARY STRINGS_DRV EXPORTS STR_Init STR_Deinit STR_Open STR_Close STR_Read STR_Write STR_IOControl

jc/md/lp-01/05Driver élémentaire : présentation10 PlatformSettings

jc/md/lp-01/05Driver élémentaire : présentation11 Structure du driver

jc/md/lp-01/05Driver élémentaire : présentation12 En-tête du driver // Fichiers den-têtes.h nécessaires #include… // Buffer de travail (unicode) #define BUFSIZE 256 WCHAR wcBuffer[BUFSIZE];

jc/md/lp-01/05Driver élémentaire : présentation13 Définition des IOCTL // Définition des IOCTL #define IOCTL_TOLOWER \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CRYPTO \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

jc/md/lp-01/05Driver élémentaire : présentation14 Entrée du driver BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; }

jc/md/lp-01/05Driver élémentaire : présentation15 Driver Init DWORD STR_Init(DWORD dwContext) { DWORD dwRet = 1; RETAILMSG( 1,(TEXT("STRINGS: STR_Init\n"))); // Mise à zéro du buffer avec memset() // TODO return dwRet; }

jc/md/lp-01/05Driver élémentaire : présentation16 Driver Deinit BOOL STR_Deinit(DWORD hDeviceContext) { RETAILMSG( 1, ( TEXT("STRINGS: STR_Deinit\n"))); return TRUE; }

jc/md/lp-01/05Driver élémentaire : présentation17 Driver Open DWORD STR_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode) { DWORD dwRet = 1; RETAILMSG( 1,(TEXT("STRINGS: STR_Open\n"))); return dwRet; }

jc/md/lp-01/05Driver élémentaire : présentation18 Driver Close BOOL STR_Close(DWORD hOpenContext) { RETAILMSG( 1,(TEXT("STRINGS: STR_Close\n"))); return TRUE; }

jc/md/lp-01/05Driver élémentaire : présentation19 Driver Read DWORD STR_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count) { // TODO // Copie de wcBuffer dans le buffer dadresse pBuffer avec wcsncpy() // Retour : nombre de caractères lus return dwRet; }

jc/md/lp-01/05Driver élémentaire : présentation20 Driver Write DWORD STR_Write(DWORD hOpenContext, LPCVOID pBuffer,DWORD NbOfBytes) { DWORD dwRet = NbOfBytes; // TODO // Copie du buffer dadresse pBuffer dans wcBuffer avec wcsncpy() return dwRet; //nombre de caractères écrits }

jc/md/lp-01/05Driver élémentaire : présentation21 Driver IOCTL (1) BOOL STR_IOControl(DWORD hOpenContext, DWORD dwCode, PWCHAR pBufIn, DWORD dwLenIn, PWCHAR pBufOut, DWORD dwLenOut, PDWORD pdwActualOut) { BOOL bRet; switch(dwCode) {

jc/md/lp-01/05Driver élémentaire : présentation22 Driver IOCTL (2) case IOCTL_TOLOWER: // TODO // Mettre dans le buffer dadresse pBufOut le contenu de wcBuffer en minuscule // Chaque lettre en majuscule est transformée en minuscule par ajout de 0x20 à chaque caractère bRet=TRUE; break;

jc/md/lp-01/05Driver élémentaire : présentation23 Driver IOCTL (3) case IOCTL_CRYPTO: // TODO // Écrire dans le buffer dadresse pBufOut le contenu de wcBuffer encrypté // On fera un codage fictif en utilisant la fonction rand() modulo 128 bRet=TRUE; break;

jc/md/lp-01/05Driver élémentaire : présentation24 Driver IOCTL (4) } // switch *pdwActualOut = dwLenOut; RETAILMSG(1,(TEXT("STRINGS: STR_IOControl\n"))); return bRet; } //STR_IOControl

jc/md/lp-01/05Driver élémentaire : présentation25 Génération du driver

jc/md/lp-01/05Driver élémentaire : présentation26 Image du noyau avec le driver

jc/md/lp-01/05Driver élémentaire : présentation27 Création de lapplication

jc/md/lp-01/05Driver élémentaire : présentation28 FileNew Project or File

jc/md/lp-01/05Driver élémentaire : présentation29 WCE Application

jc/md/lp-01/05Driver élémentaire : présentation30 Type de lapplication

jc/md/lp-01/05Driver élémentaire : présentation31 Application obtenue

jc/md/lp-01/05Driver élémentaire : présentation32 PlatformSettings

jc/md/lp-01/05Driver élémentaire : présentation33 Code de lapplication

jc/md/lp-01/05Driver élémentaire : présentation34 Application (1) // TODO // Fichiers den-têtes nécessaires #include… #define IOCTL_TOLOWER \ CTL_CODE(FILE_DEVICE_UNKNOWN,2048,\ METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_CRYPTO \ CTL_CODE(FILE_DEVICE_UNKNOWN,2049,\ METHOD_BUFFERED,FILE_ANY_ACCESS)

jc/md/lp-01/05Driver élémentaire : présentation35 Application (2) int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO // Définitions et initialisations WCHAR* pString = TEXT("HA QUE COUCOU DANS LA MACHINE");

jc/md/lp-01/05Driver élémentaire : présentation36 Application (3) // TODO // Chargement du driver avec RegisterDevice() // Retourne hDevice ou 0 si il y a une erreur if(hDevice == 0) { MessageBox(NULL, _T(" Pb Register: "), _T("StringApp"),MB_OK); return 0; }

jc/md/lp-01/05Driver élémentaire : présentation37 Application (4) // TODO // Ouverture du driver avec CreateFile(), // Retourne hString, INVALID_HANDLE_VALUE si erreur if(hString == INVALID_HANDLE_VALUE) { MessageBox(NULL, _T("Pb open"), _T("StringApp"),MB_OK); // TODO // DeregisterDevice et fermeture des handles return 0; }

jc/md/lp-01/05Driver élémentaire : présentation38 Application (5) // TODO // Écriture de la chaine avec WriteFile(), // Retourne dwErreur égal à 0 sil y a une erreur if (dwErreur == 0) { // TODO MessageBox(NULL, _T("Pb Write: "), _T("StringApp"),MB_OK); // DeregisterDevice et fermeture des handles return 0; }

jc/md/lp-01/05Driver élémentaire : présentation39 Application (6) // TODO // Lecture de la chaine avec ReadFile() // Retourne dwErreur égal à -1 sil y a une erreur if(dwErreur == -1) { MessageBox(NULL, _T("Pb Read: "), _T("StringApp"),MB_OK); // TODO // DeregisterDevice et fermeture des handles return 0; }

jc/md/lp-01/05Driver élémentaire : présentation40 Application (7) // TODO // Impression de ce qui a été lu avec MessageBox // Appel de l'IOCTL TOLOWER avec DeviceIoControl() // Retourne dwErreur égal à 0 sil y a une erreur if(dwErreur == 0) { MessageBox(NULL, _T("Pb TOLOWER: "), _T("StringApp"),MB_OK); // TODO // DeregisterDevice et fermeture des handles return 0; }

jc/md/lp-01/05Driver élémentaire : présentation41 Application (8) // TODO // Affichage de la chaîne reçue avec MessageBox // Appel de l'IOCTL CRYPTO avec DeviceIoControl() // Retourne dwErreur égal à 0 sil y a une erreur if(dwErreur == 0) { MessageBox(NULL, _T("Pb CRYPTO"), _T("StringApp"),MB_OK); // TODO // DeregisterDevice et fermeture des handles return 0; }

jc/md/lp-01/05Driver élémentaire : présentation42 Application (9) // TODO // Affichage de la chaîne cryptée avec MessageBox // DeregisterDevice et fermeture des handles return 0; } // WinMain

jc/md/lp-01/05Driver élémentaire : présentation43 Résultat à obtenir (1)

jc/md/lp-01/05Driver élémentaire : présentation44 Résultat à obtenir (2)

jc/md/lp-01/05Driver élémentaire : présentation45 Résultat à obtenir (3)

jc/md/lp-01/05Driver élémentaire : présentation46 Conclusion Les principales fonctions dun driver ont été activée sur un exemple