begin process at 2012 05 30 16:24:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

System

 > 

Remise à l'heure


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remise à l'heure

mardi 30 octobre 2007 à 09:39:54 | Remise à l'heure

XaThom

bonjour,

Sous windows XP, je réalise une acquisition de données avec une carte au format  PCI, le logiciel est développé avec c++ Builder 6. Lorsque le processeur gere l'acquisition,  l'horloge windows n'est pas mise à jour, car tout les processus sont bloqués (ceci est dû à la dll que j'utilise et je dois faire avec).A la fin de l'acquisition, par quel processus forcer windows à aller lire l'horloge CMOS-RTC pour une remise à l'heure. En ce moment j'ai la possibilité de lire l'horloge CMOS par des fonctions In- Out assembleur  à l'adresse 0x70-0x71 en implantant giveio.sys. Cela fonctionne mais de temps à autre ma lecture est erronée, et parfois plante windows sur certaines machines.
Existe -t-il une api windows qui autorise le forcage de la lecture de la cmos-rtc, ou une autre méthode qui permet une remise à l'heure propre.
Merci
XaThom
mercredi 31 octobre 2007 à 00:12:30 | Re : Remise à l'heure

juju12

Essaye d'envoyer un WM_TIMECHANGE à toutes les fenêtres.
mercredi 31 octobre 2007 à 07:41:43 | Re : Remise à l'heure

XaThom

Bonjour,

Le problème dans un premier temps est de récupérer la bonne heure sauvegardée dans la cmos. Ensuite, effectivement, prévenir par un message à toute les fenetres que l'heure à changer.
Cordialement
XaThom
mercredi 31 octobre 2007 à 13:00:22 | Re : Remise à l'heure

racpp

Administrateur CodeS-SourceS
Salut,
Tu peux essayer de faire ton propre pilote en Kernel-Mode. Ce pilote utilisera la fonction WRITE_PORT_UCHAR() exportée par hal.dll. Cette fontion te permettra de lire le contenu de la CMOS directement en utilisant les ports 0x70 et 0x71. Elle sera appelée suite à une commade passée en paramètre à DeviceIoControl() depuis ton application en User-Mode. Cette dernière récupère alors l'heure courante et met à jour le système grâce à SetSystemTime(). Cette mise à jour pourra aussi être effectuée au sein même du pilote.
Pour faire ton pilote, il te faudra le DDK téléchargeable gratuitement sur le site de Microsoft.

mercredi 31 octobre 2007 à 17:12:56 | Re : Remise à l'heure

XaThom

Rebonjour,

En fait j'arrive à lire la valeur par l'intermédiaire de "Giveio" et inp/outp, mais ne passant pas par le canal standard j'ai 2 problèmes:
Parfois je ne lis pas la bonne valeur: cela semble dire que la sélection interne faite par l'intermédiaire du registre accessible à l'adresse 0x70 a été modifié entre ma programmation et ma lecture effective. Mon programme a t-il été interrompu? et par qui?
Sur certaines machines (portable centrino duo) le système d'exploitation se plante. En fait ce que je voudrai c'est utiliser le canal standard du système d'exploitation pour aller lire l'heure et non pas passer par un canal non protégé par des possibles interruptions.
Je me demande si la solution que tu me proposes risques d'avoir le meme problème au niveau des interruptions.
Cordialement
XaThom

mercredi 31 octobre 2007 à 20:47:26 | Re : Remise à l'heure

racpp

Administrateur CodeS-SourceS
Justement, avec ton propre pilote tu maitriseras mieux l'accès aux ports 0x70 et 0x71. En ce qui concerne les interruptions, tu peux les bloquer momentannément, juste le temps de lire le contenu CMOS, grâce à l'instruction assembleur CLI. L'instruction STI réactive les interruptions materielles. Tu peux aussi donner à ton pilote un IRQL (Interrupt ReQuest Level) maximal (DIRQL) pour interdire à tout autre processus d'interrompre le tien pendant son accès aux ports 0x70 et 0x71.
Je reviens à mon post précédent  pour ajouter que la fonction WRITE_PORT_UCHAR() sera suivie de READ_PORT_UCHAR() pour la lecture du port 0x71.

jeudi 1 novembre 2007 à 18:14:52 | Re : Remise à l'heure

XaThom

Bonsoir,

Je viens de rappatrier DDK. J'ai peur de devoir mettre en oeuvre un processus qui ve me prendre beaucoup de temps, alors que windows XP possede la méthode.
Savez vous ou je pourrai trouver une documentation simple sue DDK?
Merci
XaThom
vendredi 2 novembre 2007 à 03:07:17 | Re : Remise à l'heure

racpp

Administrateur CodeS-SourceS
Le Kernel-mode est un monde à part. Il est donc normal que ça demande un peu de temps au début. Le développement en Kernel-Mode permet de résoudre plein de problèmes insolubles en User-Mode. En général, un petit pilote de quelques lignes de code permet d'accèder directement à une ressource matérielle, ou logicielle,  pour la mettre à la disposition d'une application en User-Mode.
Le DDK est accompagné d'une documentation et des exemples de code. Beaucoup de fonctions ne sont pas documentées car Microsoft se reserve le droit de modifier les prototypes des fonctions et des types de données uitilisées par le système dès qu'elle le juge nécessaire. Elle le fait souvent avec des correctifs, des services packs et les différentes versions de Windows. Pour compléter cette documentation, il existe des livres, certains électroniques, et des sites web comme:
http://www.osronline.com
Il existe aussi, en anglais,  des tutoriaux pour débuter:
http://www.codeproject.com/system/driverdev.asp
Il y'aura assez de nouvelles notions à assimiler mais au bout d'un certain temps tu seras capable de créer tes propres pilotes sur mesure et éviter les trucs, comme GiveIo, qui sont conçus pour fonctionner de manière générique donc inadaptés à des cas spécifiques.
Voilà. Bon courage.

vendredi 2 novembre 2007 à 07:41:16 | Re : Remise à l'heure

XaThom

Et bien maintenant on va essayer de s'y mettre.
Meric



Cette discussion est classée dans : windows, heure, acquisition, horloge, remise


Répondre à ce message

Sujets en rapport avec ce message

Modifier l'horloge de Windows [ par ggoufa ] Salut à tous,est ce que quelqu'un sait comment modifier l'heure de windows ?? Je pensais le faire un SetSystemTime. Qu'en pensez vous ?Merci à vousFab Session Windows [ par zibo3 ] Bonjour,J'aimerai savoir s'il est possible et si oui comment de récupérer le login et l'heure de la dernière session ouverte sous Windows. Eventuellem Changer l'heure de Windows [ par Sload ] Bonjour à tous ! Qq'un sait il comment changer l'heure de windows en C++ ? Merci d'avance Antoine http://www.sloadnet.com acquisition de données via la carte son du pc [ par tatronic ] bonjour à vous!  je voudrais utiliser la carte son  du pc comme convertisseur analogique-numérique afin de prélever un signal que j'injecte à son entr Acquisition Audio [ par estelledany ] Je suis en train de réaliser en C++ une application de vidéo conférence (gratuite et open-source) sous windows.La partie transmission réseau est faite rafraichissement d'une fenetre en API windows [ par poulpixx ] salut a tousJ'aimerai savoir comment on peut faire pour demander a une fenetre de rafraichir sa zone client en API windows C++.par exemple quand on y [Horloge] Le minimum de consommation CPU pour une horloge [ par BabyAzerty ] Bonjour, Voici le principe de mon horloge : -Elle montre l'heure (!!!!!) -Elle lance une animation à chaque heure. [code=cpp] int main(void) { [API]Recuperer l'heure de windows [ par shadow1779 ] Bonjour, ya t'il une fonction avec l'API windows pour recuperer son heure et si oui merci de me montrer un petit exemple :) Merci d'avance [API] Programme a coté de l'horloge [ par AMS010 ] Bonjour, Je programme depuis quelques temps sous l'API windows, et je me demandais comment pouvait-on mettre notre programme dans la barre de tache dè


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales