MSDN里面的一些数据结构SYSTEMTIME、SYSTEM_INFO、MEMORYSTATUS、WIN32_FIND_DATA


1.SYSTEMTIME

typedef struct _SYSTEMTIME { 
    WORD wYear; 
    WORD wMonth; 
    WORD wDayOfWeek; 
    WORD wDay; 
    WORD wHour; 
    WORD wMinute; 
    WORD wSecond; 
    WORD wMilliseconds; 
} SYSTEMTIME, *PSYSTEMTIME; 

wYear:指向当前的年份,年份的大小必须大于1601(至于为什么了?自己去查找时间相关文档)在X系统中年份大小不能超过30827

wMonth:指向当前的月份,January = 1, February = 2等等

wDayOfWeek:指向当前的的星期几。

wDay: 指向当前这个月份的第几天。

wHour : 指向当前的小时。

wMinute:指向当前的分

wSecond:指向当前的秒

wMillisecond:指向当前的毫秒。


2.SYSTEM_INFO

该结构体包含了当前计算机系统的信息。这包括处理器类型,页面大小,原始设备制造商的标识符和其他信息。

typedef struct _SYSTEM_INFO {
DWORD dwOemId;
struct {
    WORD wProcessorArchitecture;
    WORD wReserved;
}
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;
} SYSTEM_INFO, *LPSYSTEM_INFO;

dwOemId:一种过时的成员不是由windows CE应用。

wProcessorArchitecture:指向系统处理器结构。 使用wProcessorArchitecture, wProcessorLevel, and wProcessorRevision决定使用哪种处理器的类型:
PROCESSOR_ARCHITECTURE_INTEL

PROCESSOR_ARCHITECTURE_MIPS

PROCESSOR_ARCHITECTURE_ALPHA

PROCESSOR_ARCHITECTURE_PPC

PROCESSOR_ARCHITECTURE_UNKNOWN

wReserved:保留留给未来使用。
          
          dwPageSize:指向页面的大小和页面保护的承若与粒度,这是通过使用virtualAlloc函数去决定页面大小。
          
          lpMinimumApplicationAddress:指向最低内存地址的指针,访问应用程序和动态链接库(DLLs)
          
          lpMaximumApplicationAddress:指向最高内存地址的指针,访问应用程序和动态链接库
          
          
          dwActiveProcessorMask:指定一个代表系统中设置处理器的配置的处理器集。Bit 0 是处理器0,Bit 31是处理器31.
          
          
          dwNumberOfProcessors:指系统中的处理器的数目。
          
          dwProcessorType: 指系统中处理器的类型。
          如下:
          PROCESSOR_INTEL_386
          PROCESSOR_INTEL_486
          PROCESSOR_INTEL_PENTIUM
          PROCESSOR_MIPS_R3000
          PROCESSOR_MIPS_R4000
          PROCESSOR_HITACHI_SH3
          PROCESSOR_HITACHI_SH4
          PROCESSOR_PPC_403
          PROCESSOR_PPC_821
          PROCESSOR_STRONGARM
          PROCESSOR_ARM720
          
          dwAllocationGranularity:指定粒度和虚拟内存的分配,例如一个一字节的VirtualAlloc函数请求分配将保留dwallocationgranularity字节的地址空间。这个值是硬编码的   64k的过去,但是其他的硬件构架,可能需要不同的值。
          
          wProcessorLevel:指定系统的体系结构相关的处理器的水平。
          
          
          wProcessorRevision;指顶基于体系结构的处理器的修订。
          



3.MEMORYSTATUS

这个结构体包含有关当前内存可用性信息。


typedef struct _MEMORYSTATUS { 
DWORD dwLength; 
DWORD dwMemoryLoad; 
DWORD dwTotalPhys; 
DWORD dwAvailPhys; 
DWORD dwTotalPageFile; 
DWORD dwAvailPageFile; 
DWORD dwTotalVirtual; 
DWORD dwAvailVirtual; 
} MEMORYSTATUS, *LPMEMORYSTATUS;


dwLength:指定的大小,以字节为单位的MEMORYSTATUS结构体。设置此成员sizeof(MEMORYSTATUS) 当使用到GlobalMemoryStatus 函数。

dwMemoryLoad:指定一个数字在0——100之间,给当前内存使用率的总体idea,其中0 代表冒油内存的使用,100 代表完全内存的使用。

dwTotalPhys: 表示物理内存的总字节数。

dwAvailPhys:表示还有多少物理内存字节可以用。

dwTotalPageFile:显示的字节总数代表可以被存储在分页文件的总数。注意,这个数字不能代表分页文件在磁盘上实际的物理尺寸。

dwAvailPageFile:表明在分页中可用字节数。

dwTotalVirtual:显示的总字节数,能够在用户模式下在调用进程的部分虚拟地址空间的总数。

dwAvailVirtual:表示的是毫无保留的和未在调用进程的虚拟地址空间的用户模式部分内存字节数。

4.WIN32_FIND_DATA

WIN32_FIND_DATA结构体描述一个文件发现 通过 FindFirstFile 、FindFirstFileEx 、FindFirstFile 函数。

typedef struct _WIN32_FIND_DATA {
  DWORD    dwFileAttributes; 
  FILETIME ftCreationTime; 
  FILETIME ftLastAccessTime; 
  FILETIME ftLastWriteTime; 
  DWORD    nFileSizeHigh; 
  DWORD    nFileSizeLow; 
  DWORD    dwReserved0; 
  DWORD    dwReserved1; 
  TCHAR    cFileName[ MAX_PATH ]; 
  TCHAR    cAlternateFileName[ 14 ]; 
} WIN32_FIND_DATA, *PWIN32_FIND_DATA; 



dwFileAttributes:指定文件属性。(具体具体属性有哪些请查看MSDN。)

ftCreationTime:一个FILETIME 结构,指定文件或者目录被创建时候,如果底层文件系统不支持创建时间,ftCreationTime 是 0。

ftLastAccessTime: 一个FIlETIME 结构,对一个文件来说,FILETIME结构体指定当文件最后读写或者写。对一个目录来说,FILETIME结构体指定目录被创建的时候。
对目录和文件来说,指定的日期将是正确地,但是时间总是被设置到午夜。如果底层文件系统不支持上次访问时间,ftLastAccessTime 是 零。

ftLastWriteTime:一个文件FILETIME 结构,对于一个文件,当结构指定文件最后一次写入。一个目录结构,指定目录的创建,如果底层的文件系统部不支持最近写入时间,ftLastWriteTime是 0。
                
nFileSizeHigh:通过字节指定文件大小的高阶DWORD值。 这个值是零,除非该文件的大小是大于MAXDWORD。文件的大小等于:(<strong>nFileSizeHigh *</strong> (<strong>MAXDWORD</strong>+1)) + <strong>nFileSizeLow</strong>
              
nFileSizeLow:通过字节指定文件大小的低阶DWORD值。
            
dwReserved0:如果dwFileAttributes 成员包括 FILE_ATTRIBUTE_REPARSE_POINT 属性,这个成员指定的重分析标记。否则这个值就不确定,不应该使用。
            
dwReserved1: 保留给未来使用。
            
             cFileName[ MAX_PATH ]:  一个NULL结尾的字符串文件名称。
            
cAlternateFileName[ 14 ]: 一个NULL结尾的字符串,该文件是一个另类的名字。 这个名字在经典的8.3(文件名扩展文件名格式)


例子代码如下:

// API.cpp : 定义控制台应用程序的入口点。
//
#include <iostream>
#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

//获取计算机名称,CPU数量,CPU类型,已用内存百分比,物理内存总数,空闲物理内存
void GetSysInfo()
{
    //1. 定义数据结构存放计算机名称信息
    DWORD MaxComputerlenth = MAX_COMPUTERNAME_LENGTH;
	CHAR ComputerName[MAX_COMPUTERNAME_LENGTH];
	
    // 调用API函数GetComputerName获取计算机名称存放到ComputerName中。
    GetComputerName(ComputerName, &MaxComputerlenth);
	cout << "本台计算机的名称为:" << ComputerName << endl;

    //2. 定义数据结构存放计算机系统信息
    SYSTEM_INFO siSysInfo;
	TCHAR tchBuffer[100];
    // 调用API函数GetSystemInfo获取计算机名称存放到siSysInfo中
	GetSystemInfo(&siSysInfo);
	
    // 输出相关系统信息
	sprintf(tchBuffer,"CPU的数量: %u\tCPU类型: %u", 
		siSysInfo.dwNumberOfProcessors, siSysInfo.dwProcessorType);
	cout << tchBuffer << endl;
	
    //3. 定义数据结构存放内存状态信息
	MEMORYSTATUS stat;
    GlobalMemoryStatus(&stat);
	// 进行输出
    printf("%d%% 的内存在使用\n", stat.dwMemoryLoad);
    printf("总共有%8ldk的物理内存空间. \n", stat.dwTotalPhys/1024);
    printf("总共有%8ldk空闲的物理内存空间. \n", stat.dwAvailPhys/1024);
}

//
void CopyCppFile()
{
	WIN32_FIND_DATA FileData;
	HANDLE hSearch;
	DWORD dwAttrs;
	TCHAR szDirPath[] = TEXT("c:\\CppFiles\\");
	TCHAR szNewPath[MAX_PATH];
	
	BOOL fFinished = FALSE;
	
	// Create a new directory.
	if (!CreateDirectory(szDirPath, NULL))
	{
		printf("Could not create new directory.\n");
		//return;
	}
	
	// Start searching for text files in the current directory.
	hSearch = FindFirstFile(TEXT("*.cpp"), &FileData);
	if (hSearch == INVALID_HANDLE_VALUE)
	{
		printf("No *.cpp files found.\n");
		return;
	}
	
	// Copy each .TXT file to the new directory
	// and change it to read only, if not already.
	while (!fFinished)
	{
		if (CopyFile(FileData.cFileName, szNewPath, FALSE))
		{
			dwAttrs = GetFileAttributes(FileData.cFileName);
			//if (dwAttrs==INVALID_FILE_ATTRIBUTES) return;
			
			if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
			{
				SetFileAttributes(szNewPath,
					dwAttrs | FILE_ATTRIBUTE_READONLY);
			}
		}
		else
		{
			printf("Could not copy file.\n");
			//return;
		}
		
		if (!FindNextFile(hSearch, &FileData))
		{
			if (GetLastError() == ERROR_NO_MORE_FILES)
			{
				printf("Copied all cpp files.\n");
				fFinished = TRUE;
			}
			else
			{
				printf("Could not find next file.\n");
				return;
			}
		}
	}
	
	// Close the search handle.
	FindClose(hSearch);
}

void main()
{
	SYSTEMTIME tm;
	::GetLocalTime(&tm);
	char szBuf[] = "当前时间是:2010年12月31日 23:59:59";
	sprintf(szBuf, "当前时间是:%4d年%.2d月%.2d日 %.2d:%.2d:%.2d",
		tm.wYear, tm.wMonth, tm.wDay, tm.wHour, tm.wMinute, tm.wSecond);
	cout << szBuf <<endl;
	
	tm.wYear--;
	BOOL bDone = SetLocalTime(&tm);

	tm.wYear++;
	bDone = SetLocalTime(&tm);

	cout << endl;
	CopyCppFile();
	cout << endl;
	GetSysInfo();
	cout << endl;
}


                欢迎转载,但请注明出处:http://blog.csdn.net/a471196692!                                                                                                                                                                                                    

                                                                                                                                                                                                                 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值