Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
# Copyright (c) 2000 by Chad Johnston. All rights reserved. package Win32::MemoryInfo; use Win32::API; use strict; use vars qw($VERSION); $VERSION = '0.02'; #================== sub MemoryStatus (\%;$) { #================== # my $return = shift; #hash to return my $ret_type = shift; #what format does the user want? my %fmt_types = ( B => 1, KB => 1024, MB => 1024*1024, GB => 1024*1024*1024); my @params = qw(MemLoad TotalPhys AvailPhys TotalPage AvailPage TotalVirtual AvailVirtual); my %results; #results of fn call my $MemFormat; #divisor for format my $dwMSLength; #validator from fn call $MemFormat = ($ret_type =~ /^[BKMG]B?$/) ? $fmt_types{$ret_type} : $fmt_types{B} +; my $GlobalMemoryStatus ||= new Win32::API("kernel32", "GlobalMemoryStatus", ["P"], "V") or ret +urn; my $MEMORYSTATUS = pack "L8",(0, 0, 0, 0, 0, 0, 0, 0); $GlobalMemoryStatus->Call($MEMORYSTATUS); ($dwMSLength, @results{@params}) = unpack "L8", $MEMORYSTATUS; return undef if ($dwMSLength == 0); if (keys(%$return) == 0) { foreach (@params) { $return->{$_} = ($_ eq "MemLoad") ? $results{$_} : $results{$_}/$M +emFormat; } } else { foreach (@params){ $return->{$_} = $results{$_}/$MemFormat unless (!defined($return- +>{$_})); } } 1; } __END__ =head1 NAME Win32::MemoryInfo - Memory information on Win32 systems =head1 SYNOPSIS use Win32::MemoryInfo; my %mHash; if (Win32::MemoryInfo::MemoryStatus(%mHash)) { ...process results... } To get specific values: my %mHash = (TotalPhys => 0, AvailPhys => 0); if (Win32::MemoryInfo::MemoryStatus(%mHash)) { ...mHash contains only TotalPhys and AvailPhys values... } Change the default return value: Win32::MemoryInfo::MemoryStatus(%mHash,"MB"); =head1 ABSTRACT With this module you can get total/free memory on Win32 systems, including installed RAM (physical memory) and page file. The current version of Win32::MemoryInfo is available at: [nowhere yet] =head1 DESCRIPTION =over 4 Module provides one function: =item MemoryStatus B<MemoryStatus>(%mHash,[$format]); %mHash - The hash that will receive the result +s. Certain values can be set prior to th +e call to retrieve a subset. (See below +) $format - Optional parameter. Used to set the o +rder of magnitude of the results. (See bel +ow) Determines the current memory status of a Win32 machine. Populates %mHash with the results. Function returns undef on failure. Values returned through the hash: MemLoad - Windows NT 3.1 to 4.0: The percentage + of approximately the last 1000 pages of +physical memory that is in use. - Windows 2000: The approximate percent +age of total physical memory that is in use. TotalPhys - Total amount of physical memory (RAM) +. AvailPhys - Available physical memory (RAM). TotalPage - Allocated size of page (swap) file. AvailPage - Available page file memory. TotalVirtual - Total physical + maximum page file. AvailableVirtual - Total amount of available memory. Values returned through the hash can also be specified by setting them before the function is called. my %mHash = (TotalPhys => 0); Win32::MemoryInfo::MemoryStatus(%mHash); Will return only the total physical memory. MemoryStatus return values in bytes by default. This can be changed + with the $format parameter. Valid values for $format are: B - Bytes (default) KB - Kilobytes MB - Megabytes GB - Gigabytes =back No functions are exported. =head1 INSTALLATION This module can be used by simply placing it in your /Win32 directory somewhere in @INC. Use pod2html to build a html version of this POD. This module requires Win32::API module by Aldo Calpini =head1 CAVEATS The information returned by the MemoryStatus function is volatile. There is no guarantee that two sequential calls to this function will return the same information. On computers with more than 4 GB of memory, the MemoryStatus function can return incorrect information. Windows 2000 reports a value of -1 to indicate an overflow. Earlier versions of Windows NT report a value that is the real amount of memory, modulo 4 GB. On Intel x86 computers with more than 2 GB and less than 4 GB of memor +y, the MemoryStatus function will always return 2 GB for TotalPhys. Similarly, if the total available memory is between 2 and 4 GB, AvailP +hys will be rounded down to 2 GB. This module has been created and tested in a WinNT 4.0 environment on +ActiveState port of Perl 5.6. It has B<not> been tested on Win95/98 or Windows 200 +0 yet. =head1 CHANGES 0.02 - Removed SetMemResultType and GetMemResultType - Changed return type and parameters. - Lots of other changes 0.01 - Initial Release =head1 BUGS Please report. =head1 VERSION This man page documents Win32::MemoryInfo version 0.02 August 30, 2000. =head1 AUTHOR Chad Johnston C<<>cjohnston@rockstardevelopment.comC<>> =head1 COPYRIGHT Copyright (C) 2000 by Chad Johnston. All rights reserved. =head1 LICENSE This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut

In reply to Win32::MemoryInfo by Guildenstern

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2024-04-23 16:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found