Besoin d'une confirmation

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Besoin d'une confirmation

Message par Ar-S »

Cette fois j'utilise une fonction qui marche mais on m'a retourné une erreur étrange.. J'aurai donc besoin de vous pour tester cette fonction.

Code : Tout sélectionner

mem=GlobalMemoryStatus_(@info.MEMORYSTATUS)
mem=mem/1024/1024
memoire$=Str(mem)+" Mo"
Debug memoire$
Voilà pour trouver la mémoire RAM d'un PC, mais un pote m'a dit qu'il n'avait que 512 mo mais que le soft lui trouvait 2047 mo..
étrange non ?

pourriez vous tester et me dire si ça marche.

Soit c'est une quiche qui a confondu la mémoire de sa carte graphique, soit cette procédure affiche la taille utilisable par XP et non la qté de RAM contenue du dans le pc
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

ben chez moi c'est bizarre !!

ton prg me renvoie : 2047 Mo

j'ai un monitor de Ram (MemStat XP) qui m'indique

316.38 Mo de libre
647.71 Mo de swap

le panneau de config m'indique que j'ai 1 go de Ram au total ..

alors ce 2047 Mo .... c'est quoi au juste ? 8O 8O
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

si je le savais...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

le sdk dit que
GlobalMemoryStatus

The GlobalMemoryStatus function obtains information about the system's current usage of both physical and virtual memory.

To obtain information about the extended portion of the virtual address space, or if your application may run on computers with more than 4 GB of main memory, use the GlobalMemoryStatusEx function.

Code : Tout sélectionner

void GlobalMemoryStatus(
  LPMEMORYSTATUS lpBuffer
);
Parameters
lpBuffer
[out] Pointer to a MEMORYSTATUS structure. The GlobalMemoryStatus function stores information about current memory availability into this structure.

Return Values
This function does not return a value
autrement dit il faut utiliser ta variable info.

Code : Tout sélectionner

  #DIV=1024 
  GlobalMemoryStatus_(Info.MEMORYSTATUS)
  Debug Info\dwTotalPhys /#DIV/#DIV
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Message par PAPIPP »

Bonjour à tous
Voici le détail de l'API Windows

Code : Tout sélectionner

; The MEMORYSTATUS Structure contains information about current memory availability. The GlobalMemoryStatus function uses this Structure.
;
;     typedef struct _MEMORYSTATUS { // mst
;     DWORD dwLength;        // sizeof(MEMORYSTATUS)
;     DWORD dwMemoryLoad;    // percent of memory in use
;     DWORD dwTotalPhys;     // bytes of physical memory
;     DWORD dwAvailPhys;     // free physical memory bytes
;     DWORD dwTotalPageFile; // bytes of paging file
;     DWORD dwAvailPageFile; // free bytes of paging file
;     DWORD dwTotalVirtual;  // user bytes of address space
;     DWORD dwAvailVirtual;  // free user bytes
;
;     } MEMORYSTATUS, *LPMEMORYSTATUS;
;
;
;     Members
;
;     dwLength
;
;     Indicates the size of the Structure. The calling process should set this member prior To calling GlobalMemoryStatus.
;
;       dwMemoryLoad
;
;       Specifies a number between 0 And 100 that gives a general idea of current memory utilization, in which 0 indicates no memory use And 100 indicates full memory use.
;
;       dwTotalPhys
;
;       Indicates the total number of bytes of physical memory.
;
;       dwAvailPhys
;
;       Indicates the number of bytes of physical memory available.
;
;       dwTotalPageFile
;
;       Indicates the total number of bytes that can be stored in the paging file. Note that this number does Not represent the actual physical size of the paging file on disk.
;
;       dwAvailPageFile
;
;       Indicates the number of bytes available in the paging file.
;
;       dwTotalVirtual
;
;       Indicates the total number of bytes that can be described in the user mode portion of the virtual address space of the calling process.
;
;       dwAvailVirtual
;
;       Indicates the number of bytes of unreserved And uncommitted memory in the user mode portion of the virtual address space of the calling process.
;
;
mem=GlobalMemoryStatus_(@info.MEMORYSTATUS)
mem2=mem/1024/1024
memoire$=Str(mem2)+" Mo"
Debug memoire$
Debug mem
Debug "**********************************"
Debug info\dwlength;        // sizeof(MEMORYSTATUS)
Debug info\dwMemoryLoad;    // percent of memory in use
Debug info\dwTotalPhys;     // bytes of physical memory
Debug info\dwAvailPhys;     // free physical memory bytes
Debug info\dwTotalPageFile; // bytes of paging file
Debug info\dwAvailPageFile; // free bytes of paging file
Debug info\dwTotalVirtual;  // user bytes of address space
Debug info\dwAvailVirtual;  // free user bytes

Avatar de l’utilisateur
SPH
Messages : 4949
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

2047MO chez moi ce qui est exact :idea:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

SPH a écrit :2047MO chez moi ce qui est exact :idea:
j'ai la même valeur , mais cela ne correspond a rien chez moi ..
puisque j'ai 1 Go de Ram

par contre toutes les autres valeurs plus bas on l'air d'être bonnes...
Anonyme

Message par Anonyme »

Code : Tout sélectionner

mem=GlobalMemoryStatus_(@info.MEMORYSTATUS)
Debug info\dwTotalPhys/1024/1024



Non ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Cpl.Bator a écrit :

Code : Tout sélectionner

mem=GlobalMemoryStatus_(@info.MEMORYSTATUS)
Debug info\dwTotalPhys/1024/1024



Non ?
oui ! c'est bon !! :D
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Super, merci pour ce correctif !
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Petit historique des liens consacrés à la structure MemoryStatus :
LSI
LSI
LSI
Jacobus
Droopy

@PAPIPP

Très cool d'avoir posté la doc complète. Merci. En la traduisant, j'ai constaté qu'il est recommandé de spécifier la taille de la structure avant d'appeler la fonction.

Code : Tout sélectionner

; _______________________________________________________
; Détermination des différentes taille mémoires
; Ollivier
; Libre
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
; _______________________________________________________
; ETAT MEMOIRE MEMOIRES DISPO DISPONIBLE
; STAT MEMORY MEMORIES AVAILABLE (comme ça je le retrouvrai !) 
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
;
; La fonction GlobalMemoryStatus() nécessite la 
; structure MEMORYSTATUS contenant les infos sur la
; mémoire courante.
;
; (Process appelant = Programme qui appelle la fonction)
;  
; dwLength.L         1) sizeof(MEMORYSTATUS) 
; dwMemoryLoad.L     2) percent of memory in use 
; dwTotalPhys.L      3) bytes of physical memory 
; dwAvailPhys.L      4) free physical memory bytes 
; dwTotalPageFile.L  5) bytes of paging file 
; dwAvailPageFile.L  6) free bytes of paging file 
; dwTotalVirtual.L   7) user bytes of address space 
; dwAvailVirtual.L   8) free user bytes 
; 
; 1) dwLength : Indique la taille de la structure
; Le process appelant doit spécifier cette valeur
; AVANT d'exécuter la fonction GlobalMemoryStatus()
; 
; 2) dwMemoryLoad : Renvoie le pourcentage de mémoire
; utilisée.
; 0% = Mémoire complètement dispo
; 100% = Mémoire complètement saturée
;
; 3) dwTotalPhys : Taille totale de la mémoire physique
; (en bytes)
; 
; 4) dwAvailPhys : Taille de la mémoire physique
; disponible (en bytes)
; 
; 5) dwTotalPageFile : Indique la taille mémoire 
; maximum (en octets) supportée par le fichier de
; pagination. 
; Nota : cette valeur ne correspond pas à la taille
; physique actuelle sur disque du fichier de
; pagination. 
; 
; 6) dwAvailPageFile : Indique la taille mémoire 
; disponible dans le fichier de pagination.
; 
; 7) dwTotalVirtual : Indique la taille mémoire
; virtuelle théoriquement allouable par le process 
; appelant
;
; 8) dwAvailVirtual : Indique la taille mémoire
; virtuelle dispo pour le process appelant  
; 

  Define MemInfo.MEMORYSTATUS
  Define MemInfoWin.L ; Handle de la fenêtre d'affichage
  Define MemInfoGgt.L ; N° du gadget d'affichage
  Define Comment.S ; Commentaires explicatifs (pour chaque item)
  Define Value.S ; Valeur affichée (Idem)
  Define LValue.L ; Valeur extraite de la foncT API (Idem)
  Define W.L ; Largeur interne de la fenêtre
  Define H.L ; Hauteur interne de la fenêtre
  Define B.L ; Taille (pixel) des marges de cadrage du gadget
  B = 16
  
  PokeL(MemInfo, SizeOf(MEMORYSTATUS) )
  If GlobalMemoryStatus_(MemInfo)
    W = 620
    H = 192
    MemInfoWin = OpenWindow(-1, 0, 0, W, H, "Infos mémoire", $CF0001)
    If MemInfoWin
      CreateGadgetList(WindowID(MemInfoWin) )
      MemInfoGgt = ListIconGadget(-1, B, B, W - B << 1, H - B << 1, "Nom", 384)
      AddGadgetColumn(MemInfoGgt, 1, "Valeur", 200)
      Restore MemInfoData
      For I = 1 To 7
        Read Comment
        LValue = PeekL(MemInfo + I << 2)
        Value = Str(LValue)
        If I = 1
          Value + "%"
        Else
          Value = Str(LValue >> 20) + "Mo (" + Value + " octets)"
        EndIf
        AddGadgetItem(MemInfoGgt, -1, Comment + Chr(10) + Value )
      Next I
      Repeat
      Until WaitWindowEvent() = 16
      CloseWindow(MemInfoWin)
    Else
      MessageRequester("Erreur", "Problème d'affichage !")
    EndIf
  Else
    MessageRequester("Erreur", "Impossible d'obtenir les infos concernant la mémoire !")
  EndIf

DataSection
MemInfoData:
Data.S "Pourcentage représentatif de la mémoire utilisée."
Data.S "Taille totale de la mémoire physique"
Data.S "Taille de la mémoire physique disponible"
Data.S "Taille mémoire maximum supportée par le fichier de pagination."
Data.S "Taille mémoire disponible dans le fichier de pagination"
Data.S "Taille mémoire virtuelle théoriquement allouable par le process appelant"
Data.S "Taille mémoire virtuelle dispo pour le process appelant"
EndDataSection
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Merci pour la Traduction olivier et merci Papi

---EDIT---

Pour ce qui est de info\dwMemoryLoad c'est bien la RAM utilisée par windows par rapport à la ram totale ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :Merci pour la Traduction olivier et merci Papi

---EDIT---

Pour ce qui est de info\dwMemoryLoad c'est bien la RAM utilisée par windows par rapport à la ram totale ?
pour moi cela correspond au pourcentage utilisé de ma Ram total !!
(environ 52 % actuellement)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Dobro a écrit :
Ar-S a écrit :Merci pour la Traduction olivier et merci Papi

---EDIT---

Pour ce qui est de info\dwMemoryLoad c'est bien la RAM utilisée par windows par rapport à la ram totale ?
pour moi cela correspond au pourcentage utilisé de ma Ram total !!
(environ 52 % actuellement)
52% c'est bien ça ! Moi avec mes 2 Go ça m'affiche bien 25%
Cool :P
Répondre