linux中的kconfig看不懂,谢谢呢

linux中的kconfig看不懂,谢谢呢,第1张

tristate 代表在内核中有三种状态,一种不选种,一种是*选种直接编译进内核,加载驱动到内核里,还有一种是M手动添加驱动,而 bool只有两种状态,即选中和不选中。"Mini2440 module sample"这个是在make menuconfig时刷出的提示字符。depends on MACH_MINI2440 这个配置选项出现在make menuconfig菜单栏下,在内核配置中必须选中MACH_MINI2440。default m if MACH_MINI2440 这个如果选种了MACH_MINI2440,默认是手动加载这个驱动。help以后的都是帮助信息了

获取 Windows *** 作系统版本信息的 C 程序 [zt]

From:[url]http://kevin2296.blog.163.com/article/-aBzn-rfC7hw.html[/url]

[php]

// OSinfo.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"

#include <windows.h>

#include <stdio.h>

#include "winsock.h"

#include <string>

#include <iostream>

using std::coutusing std::stringusing std::iostream

using std::endlusing std::iosusing std::fstream

using std::ofstreamusing std::cin

#pragma comment( lib, "Ws2_32.lib" )

#define MAX_VALUE_NAME 256

//char osinfo[MAX_PATH][MAX_PATH]

char patchname[MAX_VALUE_NAME]

//全局变量

char *LocalIP="" //定义IP地址变量

//获取本机ip

bool GetLocalIp()

{

WSADATA wsaData

char name[255]//定义用于存放获得的主机名的变量

PHOSTENT hostinfo

//调用MAKEWORD()获得Winsock版本的正确值,用于加载Winsock库

if ( WSAStartup( MAKEWORD(2,2), &wsaData ) == 0 )

{

//现在是加载Winsock库,如果WSAStartup()函数返回值为0,说明加载成功,程序可以继续

if( gethostname ( name, sizeof(name)) == 0)

{

//如果成功地将本地主机名存放入由name参数指定的缓冲区中

if((hostinfo = gethostbyname(name)) != NULL)

{

//这是获取主机名,如果获得主机名成功的话,将返回一个指针,指向hostinfo,hostinfo

//为PHOSTENT型的变量,下面即将用到这个结构体

LocalIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list)

//调用inet_ntoa()函数,将hostinfo结构变量中的h_addr_list转化为标准的点分表示的IP

//地址(如192.168.0.1)

// printf("the ip is:%s\n",LocalIP)//输出IP地址

}

}

WSACleanup( )//卸载Winsock库,并释放所有资源

}

return TRUE

}

//显示系统版本

bool DisplaySystemVesion(FILE *fp)

{

OSVERSIONINFOEX osvi

BOOL bOsVersionInfoEx

//利用OSVERSIONINFOEX结构调用GetVersionEx()函数

//如果调用失败,可尝试使用OSVERSIONINFO结构

ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX))

osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX)

if(!(bOsVersionInfoEx=GetVersionEx((OSVERSIONINFO*)&osvi)))

{

//

osvi.dwOSVersionInfoSize=sizeof(OSVERSIONINFO)

if(!GetVersionEx((OSVERSIONINFO*)&osvi))

return FALSE

}

switch(osvi.dwPlatformId)

{

case VER_PLATFORM_WIN32_NT:

//get os information

if ( osvi.dwMajorVersion == 5 &&osvi.dwMinorVersion == 2 )

{

printf("Microsoft Windows Server 2003 family ")

//fprintf( fp, "Microsoft Windows Server 2003 family ")

fprintf( fp, "WindowsServer2003")

// strcpy(osinfo[0],"Microsoft Windows Server 2003 family ")

}

if ( osvi.dwMajorVersion == 5 &&osvi.dwMinorVersion == 1 )

{

printf("Microsoft Windows XP ")

//fprintf( fp, "Microsoft Windows XP ")

fprintf( fp, "WindowsXP")

// strcpy(osinfo[0],"Microsoft Windows XP ")

}

if ( osvi.dwMajorVersion == 5 &&osvi.dwMinorVersion == 0 )

{

printf("Microsoft Windows 2000 ")

//fprintf( fp, "Microsoft Windows 2000 ")

fprintf( fp, "Windows2000")

// strcpy(osinfo[0],"Microsoft Windows 2000 ")

}

if ( osvi.dwMajorVersion <= 4 )

{

printf("Microsoft Windows NT ")

//fprintf( fp, "Microsoft Windows NT ")

fprintf( fp, "WindowsNT")

// strcpy(osinfo[0],"Microsoft Windows NT ")

}

//

if(bOsVersionInfoEx)

{

if(osvi.wProductType==VER_NT_WORKSTATION)

{

printf("Professional ")

// fprintf(fp,"Professional ")

}

if(osvi.wProductType==VER_NT_SERVER)

{

printf("Server ")

// fprintf(fp,"Server ")

}

//printf("\n")

fprintf(fp,"\n")

}

else

{

HKEY hKey

char szProductType[80]

DWORD dwBufLen

RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",0,KEY_QUERY_VALUE,&hKey)

RegQueryValueEx(hKey,"ProductType",NULL,NULL,(LPBYTE)szProductType,&dwBufLen)

RegCloseKey(hKey)

if(lstrcmpi("WINNT",szProductType)==0)

{

printf("Workstation ")

// fprintf(fp,"Workstation ")

}

if(lstrcmpi("SERVERNT",szProductType)==0)

{

printf("Server ")

// fprintf(fp,"Server ")

}

//printf("\n")

fprintf(fp,"\n")

}

// Display service pack (if any) and build number.

if( osvi.dwMajorVersion == 4 &&

lstrcmpi( osvi.szCSDVersion, "Service Pack 6" ) == 0 )

{

HKEY hKey

LONG lRet

// Test for SP6 versus SP6a.

lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,

"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009",

0, KEY_QUERY_VALUE, &hKey )

if( lRet == ERROR_SUCCESS )

{

printf( "Service Pack 6a (Build %d)\n", osvi.dwBuildNumber &0xFFFF )

// fprintf( fp,"Service Pack 6a (Build %d)\n", osvi.dwBuildNumber &0xFFFF )

// fprintf( fp,"Service Pack 6a\n" )

fprintf( fp,"6a\n" )

}

else // Windows NT 4.0 prior to SP6a

{

printf( "%s (Build %d)",osvi.szCSDVersion,osvi.dwBuildNumber &0xFFFF)

/* printf( "%s (Build %d)\n",

osvi.szCSDVersion,

osvi.dwBuildNumber &0xFFFF)

*/

// fprintf( fp,"%s (Build %d)\n",

// osvi.szCSDVersion,

// osvi.dwBuildNumber &0xFFFF)

// fprintf( fp,"%s\n",osvi.szCSDVersion)

fprintf( fp,"%s\n",osvi.szCSDVersion+13) //去掉"Service Pack "共13个字节,只保留最后的号

}

RegCloseKey( hKey )

}

else // Windows NT 3.51 and earlier or Windows 2000 and later

{

printf( "%s (Build %d)",osvi.szCSDVersion,osvi.dwBuildNumber &0xFFFF)

/*printf( "%s (Build %d)\n",

osvi.szCSDVersion,

osvi.dwBuildNumber &0xFFFF)

*/

// fprintf( fp,"%s (Build %d)\n",

// osvi.szCSDVersion,

// osvi.dwBuildNumber &0xFFFF)

// fprintf( fp,"%s\n",osvi.szCSDVersion)

fprintf( fp,"%s\n",osvi.szCSDVersion+13) //去掉"Service Pack "共13个字节,只保留最后的号

}

break

case VER_PLATFORM_WIN32_WINDOWS:

if (osvi.dwMajorVersion == 4 &&osvi.dwMinorVersion == 0)

{

printf("Microsoft Windows 95 ")

fprintf(fp,"Microsoft Windows 95 ")

if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )

{

printf("OSR2")

fprintf(fp,"OSR2")

// strcat(osinfo[0], "OSR2" )

}

printf("\n")

fprintf(fp,"\n")

}

if (osvi.dwMajorVersion == 4 &&osvi.dwMinorVersion == 10)

{

printf("Microsoft Windows 98 ")

fprintf(fp,"Microsoft Windows 98 ")

if ( osvi.szCSDVersion[1] == 'A' )

{

printf("SE")

fprintf(fp,"SE")

}

printf("\n")

fprintf(fp,"\n")

}

if (osvi.dwMajorVersion == 4 &&osvi.dwMinorVersion == 90)

{

printf("Microsoft Windows Millennium Edition\n")

fprintf(fp,"Microsoft Windows Millennium Edition\n")

}

break

case VER_PLATFORM_WIN32s:

printf(" Microsoft Win32s\n")

fprintf(fp," Microsoft Win32s\n")

break

}

return TRUE

}

void DisplaySetupedPatch(FILE *fp)

{

HKEY hKey

// LONG lRet

// char Buf[80]

// char lpBuf[80]

DWORD i

DWORD retCode

// DWORD j

// DWORD retValue

DWORD dwxValueName=MAX_VALUE_NAME

LPCTSTR path="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix"

LONG return0=RegOpenKeyEx(HKEY_LOCAL_MACHINE,path,0,KEY_READ,&hKey)

if(return0!=ERROR_SUCCESS)

{

printf("错误:无法打开有关的键!")

}

for(i=1,retCode=ERROR_SUCCESSretCode==ERROR_SUCCESSi++)

{

retCode=RegEnumKey(hKey,i,patchname,MAX_PATH)

if(retCode==ERROR_SUCCESS)

{

printf("%s\n",patchname)

fprintf(fp,"%s\n",patchname)

}

}

}

void main()

{

//写入文件

FILE *fp

GetLocalIp()

const char SaveReciveFilePath[]="f:\\"

string abPath(SaveReciveFilePath)

char Filename[512]=""

strcpy(Filename,LocalIP) //拷贝字符串

strcat(Filename,".txt") //连接字符串

abPath += Filename

fp=fopen(abPath.c_str(),"w")

while(fp==NULL)

// printf("the LocalIP is:%s\n",LocalIP)//输出IP地址

printf("本机IP地址:%s\n",LocalIP)//输出IP地址

// fprintf(fp,"本机IP:%s\n",LocalIP)

// fprintf(fp,"%s\n",LocalIP)

bool a=FALSE

printf("本机 *** 作系统版本是:")

// fprintf(fp,"本机 *** 作系统版本是:")

// *** 作系统版本信息

while (a!=TRUE)

{

a=DisplaySystemVesion(fp)

}

// *** 作系统语言信息

printf("语言:")

// fprintf(fp,"语言:")

/* WORD wLangPID = PRIMARYLANGID( GetSystemDefaultLangID() )

if( LANG_CHINESE == wLangPID )

{

printf("CHS\n")//中文

fprintf(fp,"CHN\n")

}

else

{

printf("ENG\n")//英文

fprintf(fp,"ENG\n")

}

if( NULL == wLangPID )

{

printf( "Failure!\n" )

}

*/

int LanguageID=GetSystemDefaultLangID() //返回 *** 作系统语言的ID号

switch(LanguageID)

{

case 0x0404:

printf("CHT\n")//Chinese Taiwan

fprintf(fp,"CHT\n")

break

case 0x0804:

printf("CHS\n")//Chinese PRC

fprintf(fp,"CHS\n")

break

case 0x0c04:

printf("ZHH\n")//Chinese Hong Kong SAR

fprintf(fp,"ZHH\n")

break

case 0x1004:

printf("ZHH\n")//Chinese Singapore

fprintf(fp,"ZHH\n")

break

case 0x1404:

printf("ZHM\n")//Chinese Macau SAR

fprintf(fp,"ZHM\n")

break

case 0x0809:

printf("ENG\n")//English United Kingdom

fprintf(fp,"ENG\n")

break

case 0x0409:

printf("USA\n")//English United States

fprintf(fp,"USA\n")

break

default:

printf("Default\n")

fprintf(fp,"Default\n")

break

}

// printf("%d\n",id)

// *** 作系统已安装补丁信息

printf("系统已经安装的升级补丁有:\n")

// fprintf(fp,"系统已经安装的升级补丁有:\n")

DisplaySetupedPatch(fp)

fclose(fp)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/6140499.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存