IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Acc�s � la RAM


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut Acc�s � la RAM
    Salut � tous!

    Je suis nouveau sur ce forum, et d�butant en C++. Je cherche les fonctions, une unit�, librairie pour acc�der � la RAM. J'ai besoin d'un acc�s tr�s rapide aux donn�es. Pouvez-vous me conseiller?

    Merci de votre aide!

  2. #2
    mat.M
    Invit�(e)
    Par d�faut
    Je cherche les fonctions, une unit�, librairie pour acc�der � la RAM. J'ai besoin d'un acc�s tr�s rapide aux donn�es
    Je suis nouveau sur ce forum, et d�butant en C++.
    Le moyen direct en C++ pour acc�der � la RAM cela s'appelle un pointeur cher ami.
    ex:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    char *p;
    p=NULL;
    p=new char[25];
    .....
    delete [] p;
    Donc conseil : prendre un bon livre sur le C++.

    J'ai besoin d'un acc�s tr�s rapide aux donn�es
    Utiliser pour cela des listes cha�n�es.

    Sous Windows , on ne peut pas acc�der directement au mat�riel ( contrairement au DOS ).Sinon �crire des Device Drivers.
    Sinon on peut mixer code assembleur machine et C++

  3. #3
    Membre confirm�
    Inscrit en
    F�vrier 2003
    Messages
    141
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2003
    Messages : 141
    Par d�faut ASM
    Je confirme ce qu'a dit addicted_to_MFC quant � l'utilisation de l'asm dans ton code : y'a pas plus rapide(tu travailles avec les registres du processeur). Pour des fonctions pas trop complexes au d�but, il n'est pas tr�s difficile de se mettre � l'asm...

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut
    Citation Envoy� par addicted_to_MFC
    Le moyen direct en C++ pour acc�der � la RAM cela s'appelle un pointeur cher ami.
    Sous Windows , on ne peut pas acc�der directement au mat�riel ( contrairement au DOS ).Sinon �crire des Device Drivers.
    Sinon on peut mixer code assembleur machine et C++
    C'est ce que je pensais au d�but, mais apr�s des tests, je me suis rendu compte que l'allocation d'un pointeur utilisait plut�t la m�moire virtuelle malgr� les 40 Mo libres de ma RAM...

    Apr�s mes recherches sur le SDK, j'ai trouv� peut-�tre cette piste:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Declare Function AllocateUserPhysicalPages Lib "kernel32.dll" _ 
    (ByVal hProcess As Long, ByRef NumberOfPages As OUT, 
    ByRef PageArray As PULONG_PTR ) As Long
    Qu'en pensez-vous? Suis-je sur la bonne voie?

  5. #5
    Membre averti
    Profil pro
    D�veloppeur Full Stack
    Inscrit en
    F�vrier 2003
    Messages
    29
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Full Stack

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 29
    Par d�faut
    Pourquoi veux tu exactement acc�der � la ram?
    la fonction AllocateUserPhysicalPages est juste une fonction qui permet d'allouer des pages m�moires � un processus mais pas d' acc�der � des pages m�moires existantes.par le principe m�me des systemes prot�g�s tu ne pourra jamais acc�der � la m�moire allou�e par les autres processus que ton prog.et si tu trouvais un moyen ce serait une faille de s�curit� donc non portable.
    Pour acc�der � la gestion m�moire il faut �tre en ring 0 et seul l'os y a acc�s.Je sais qu'il existait des bidouilles seur les systemes 9x qui permettait d'ex�cuter du code en ring 0 � partir du ring 3 par l'utilisation des call gate.
    par contre il existe des techniques pour ecrire ou lire dans la m�moire d'un autre processus par les fonctions ReadProcessMemory et WriteProcessMemory � condition que la zone m�moire partag�e ait l'acc�s ecriture ou lecture

  6. #6
    mat.M
    Invit�(e)
    Par d�faut
    C'est ce que je pensais au d�but, mais apr�s des tests, je me suis rendu compte que l'allocation d'un pointeur utilisait plut�t la m�moire virtuelle malgr� les 40 Mo libres de ma RAM...
    C'est exact , je me suis tromp� en partie car avec des OS comme Unix par ex. ( �a reste � v�rifier ) l'allocation d'un pointeur donne un acc�s direct � la m�moire.
    Sous Windows il est vrai on n'acc�de pas du tout directement � la m�moire physique mais plut�t � une m�moire virtuelle.

    et d�butant en C++. Je
    Tu sais ce que c'est un pointeur donc pas d�butant .
    Tu ne te serais pas en train de te payer notre t�te ?

    Charon a tout juste quand il dit que parce que syst�me prot�g� tu ne peux pas acc�der aux pages m�moires.

    Je pense qu'un des moyens les plus rapides pour effectuer des traitements ( ce n'est pas acc�der � des donn�es mais ces donn�es il faut les traiter -but de l'informatique ) c'est l'utilisation de Threads avec un certain niveau de priorit�


    Et le but des manoeuvres dans tout cela c'est quoi ???

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut
    Citation Envoy� par addicted_to_MFC
    Tu sais ce que c'est un pointeur donc pas d�butant. Tu ne te serais pas en train de te payer notre t�te ?
    Je ne me permettrais s�rement pas de me payer votre t�te!

  8. #8
    mat.M
    Invit�(e)
    Par d�faut
    Avec TP sous dos, j'utilisais le driver Himem.sys, et les fonctions qui vont avec... Les variables utilisent la m�moire conventionnelle, donc pas de probl�mes de rapidit�!
    Oublie d�finitivement la gestion m�moire avec himem.sys �a appartient largement au pass�

    Pour te d�montrer l'utilit� d'acc�der � la RAM, imagine un programme d'animation, o� toutes les images sont charg�es en RAM, puis sont affich�es � l'�cran � grande vitesse (comme un player de vid�o divx ou mpg .Ces programmes ne peuvent se faire qu'avec un acc�s direct de la m�moire physique (et non virtuelle).
    Non monsieur :
    Ceci �tait valable sous DOS mais pas sous Windows.
    Parce que si on peut stocker des images bitmaps en m�moire et admettons directement dans la RAM , apr�s il faut les afficher � l'�cran.
    Probl�me parce que p�riph�riques vid�os diff�rents les uns des autres.
    Effectivement sous DOS on pouvait acc�der gr�ce � un pointeur sur la m�moire vid�o ( adresse A000:000 )et afficher de cette mani�re un buffer .
    Mais sous Windows c'est impossible parce que surcouche logicielle ind�pendante du mat�riel.
    Windows fait la translation entre une proc�dure �crite en Delphi ou en C++ entre le GDI et le mat�riel.

    Pour jouer une vid�o le plus simple et plus performant est d'utiliser DirectShow.
    Pour stocker des images en m�moire , fonctions GDI ou "surfaces " DirectDraw.

    Ca fait plus d'un an que je suis au chomage, et ce projet est la seule chose qui me permet de tenir le coups!
    Mieux vaut consacrer une partie pour son projet et une autre pour la recherche d'un emploi ( SSII ou autre) . Car pour commercialiser un projet informatique ( donc un logiciel ) , il faut pr�senter quelque chose de b�ton.

  9. #9
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut
    tout � fait d'accord!

    Tu sais, m'expliquer vos th�ories sur l'utilisation ne m'aide pas plus que �a, je te rappel que j'ai toujours besoin de la RAM en acc�s direct, et rien d'autres...

  10. #10
    Membre averti
    Profil pro
    D�veloppeur Full Stack
    Inscrit en
    F�vrier 2003
    Messages
    29
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Full Stack

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 29
    Par d�faut
    si tu veux acc�der � la ram en acc�s direct cr�e un driver avec le ddk de microsoft,les drivers s'ex�cutent dans un ring plus privil�gi� et y ont donc acc�s ou du moins par l'api fourni par les drivers.Mais il faut que tu saches que la m�moire en mode prot�g� n'est pas lin�aire,Il y a un syst�me de pagination et segmentation.Ensuite puisque tu veux acc�der apparemment � la m�moire video directement je dirais l� m�me chose que addicted_to_MFC utilise directx c'est fait pour ��.

  11. #11
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut
    Merci pour toutes vos r�ponses!

    En fait, c'est pas pour de la video, mais pour charger des samples en RAM...
    Si il faut que je fasse un driver, alors comment faire?

  12. #12
    Membre averti
    Profil pro
    D�veloppeur Full Stack
    Inscrit en
    F�vrier 2003
    Messages
    29
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Full Stack

    Informations forums :
    Inscription : F�vrier 2003
    Messages : 29
    Par d�faut
    pour la gestion m�moire au niveau des drivers regarde l�:
    http://msdn.microsoft.com/library/en-us/kmarch/hh/kmarch/k106_544y.asp
    pour la doc complete du ddk regarde � driver development kit sur le meme site.
    sinon le ddk lui m�me �tait t�l�chargeable sur le site de msdn mais je crois maintenant qu'il faut le commander.
    par contre je voudrais juste te poser quelques questions pour �clairer ma lanterne au risque d'�tre pris pour un boulet.Je ne vois pas du tout pour tes samples audio pourquoi tu n'utiliserais pas la gestion normale de la m�moire en utilisant new.est-ce parce que la m�moire � laquelle tu veux acc�der est de la m�moire E/S(tu parlais d'interfaces electroniques).quand tu dis acc�der � la ram,tu veux faire quoi exactement ? acc�der � une adresse bien pr�cise?O� est ce que tu veux �tre certain que la page correspondante � ta zone m�moire ne sera jamais stock�e sur le disque et recharg�e acc�l�rant ainsi l'acc�s?
    dans les 2 cas,je crois qu'au niveau d'un driver il y a des fonctions qui permettent d'assigner une zone de m�moire physique.Ceux sont les m�mes qu'utilisent g�n�ralement les developpeurs de drivers pour r�server la m�moire entr�e-sortie de leur matos.
    sinon au passage dans windows l'interface audio/video est g�r� par la technologie mci.On acc�de � cette technologie par une api windows pr�vue et de l'autre cot� il y a des drivers MCI developp�s avec le ddk
    qui communiquent avec des cartes sons,t�l�s..Je crois qu'il existe dans les mci une notion de mixer.peut �tre devrais-tu developper ton propre driver mci.Tu devrais te renseigner la dessus.

  13. #13
    mat.M
    Invit�(e)
    Par d�faut
    Tu sais, m'expliquer vos th�ories sur l'utilisation ne m'aide pas plus que �a, je te rappel que j'ai toujours besoin de la RAM en acc�s direct, et rien d'autres...
    Quand on est t�tu c'est pour la vie !
    charon a sugg�r� de d�velopper un Device Driver , chose tr�s ardue.
    Bonne chance pour faire cela !! ( fais moi-signe quand tu auras termin� )
    De plus acc�der DIRECTEMENT � la m�moire RAM ne sert � rien car l'OS d�place les blocs de m�moire en fonction des besoins.

    En fait, c'est pas pour de la video, mais pour charger des samples en RAM...
    Comme l'a sugg�r� charon , utiliser les commandes MCI.
    Sinon avoir recours � Direct Sound.
    L'int�r�t de Direct X comme son nom l'indique est un acc�s direct au mat�riel en outrepassant les couches logicielles.
    Les �quipes de d�veloppement de Microsoft sont � mon avis plus � m�me de d�velopper des technologies pour leur OS que le moindre programmeur dans son coin et ses drivers.

    Moralit� : s'acheter un bon livre de programmation Windows comme le Petzold !

  14. #14
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    D�cembre 2002
    Messages
    3 573
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 52

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : D�cembre 2002
    Messages : 3 573
    Par d�faut
    J'aurais peut-�tre du commencer par l�: J'ai besoin de charger des samples en m�moire pour faire le mixage en temps r�el. Encore merci de votre aide! �+

  15. #15
    mat.M
    Invit�(e)
    Par d�faut
    S'il ya un retard sur le mixage des �chantillons , il faut avoir recours � ce moment-l� � la programmation de threads ou autres processus ( j'ai d�j� indiqu� cette m�thode ) . Car en d�finit le coeur du probl�me n'est pas d'acc�der rapidement � la m�moire mais plut�t le traitement d'un �chantillon ( application de filtres de traitements , calculs etc...).
    Pour cela avoir recours � des threads : avec Delphi/VCL il y a la classe TThread.

    Attention avec l'utilisation de librairies tierces comme Midas : il faut payer des royalties en utilisation commerciale !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. D�montage PC portable : acces RAM
    Par Ange_blond dans le forum Ordinateurs
    R�ponses: 5
    Dernier message: 29/05/2008, 20h12
  2. sp�cifier l'acc�s � plus de RAM
    Par sinoquet dans le forum G�n�ral Java
    R�ponses: 8
    Dernier message: 16/04/2008, 23h12
  3. MySql uniquement en RAM (pas d'acc�s disque)
    Par gagarine dans le forum SQL Proc�dural
    R�ponses: 2
    Dernier message: 15/09/2006, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo