获取电脑的开机时间NtQuerySystemInformation
2015-08-27 10:53
1216 查看
我们调用的函数在ntdll.dll链接库中,并且我们只能进行动态的链接
下面对ntdll.dll链接库进行简单的介绍:
ntdll.dll描述了windows本地NTAPI的接口。是重要的Windows NT内核级文件。当Windows启动时,ntdll.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
百度百科:http://baike.baidu.com/link?url=Q_gBg7cQ8rftv-pbzCC-zDV2moZ8fv-7hrqACnnmEk_3WZCus01Bxs6kKet9O33rgc3Q8pzWLhmzI1YcCqwvP_
可以自己查看一下详细的信息
下面直接上代码:
下面对ntdll.dll链接库进行简单的介绍:
ntdll.dll描述了windows本地NTAPI的接口。是重要的Windows NT内核级文件。当Windows启动时,ntdll.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
百度百科:http://baike.baidu.com/link?url=Q_gBg7cQ8rftv-pbzCC-zDV2moZ8fv-7hrqACnnmEk_3WZCus01Bxs6kKet9O33rgc3Q8pzWLhmzI1YcCqwvP_
可以自己查看一下详细的信息
下面直接上代码:
#include<stdio.h> #include<windows.h> #define NT_SUCCESS(x) ((x)>=0) #define SystemTimeInformation 3 typedef struct { LARGE_INTEGER liKeBootTime; LARGE_INTEGER liKeSystemTime; LARGE_INTEGER liExpTimeZoneBias; ULONG uCurrentTimeZoneId; DWORD dwReserved; } SYSTEM_TIME_INFORMATION; typedef long (__stdcall *fnNtQuerySystemInformation)( IN UINT SystemInformationClass, OUT PVOID SystemInformation, IN ULONG SystemInformationLength, OUT PULONG ReturnLength OPTIONAL); static fnNtQuerySystemInformation NtQuerySystemInformation = NULL; int main(void) { NtQuerySystemInformation = (fnNtQuerySystemInformation)GetProcAddress(LoadLibrary("ntdll.dll"), "NtQuerySystemInformation"); if(NtQuerySystemInformation == NULL) { printf("Get NtQuerySystemInformation Addr Failed!n"); exit(-1); } LONG status; SYSTEM_TIME_INFORMATION sti; status = NtQuerySystemInformation(SystemTimeInformation, &sti,sizeof(sti),0); printf("boot time (ms) == %I64Xn",sti.liKeBootTime.QuadPart); if(NO_ERROR != status) { printf("NtQuerySystemInformation Failed!n"); exit(-1); } FILETIME ft; SYSTEMTIME st; memcpy(&ft,&sti.liKeBootTime,sizeof(ft)); //将其转为文件时间 FileTimeToLocalFileTime(&ft,&ft); //将一个FILETIME结构转换成本地时间 FileTimeToSystemTime(&ft,&st); //将文件时间转为系统时间 printf("Date: %02d-%02d-%04d Time: %02d:%02d:%02d ",st.wMonth,st.wDay,st.wYear, st.wHour,st.wMinute,st.wSecond); getchar(); return 0; }
相关文章推荐
- 如何在Ubuntu平台上使用Bluetooth
- 一、buildroot-2014.08编译根文件系统(nfs挂载)
- [leetcode] 63.Unique Paths II
- poj-2442Sequence
- UITextfield键盘相关设置
- uedit富文本编辑器
- [leetcode] 62.Unique Paths
- 国内UED大全
- HDU3836Equivalent Sets(强连通+加边构成强连通)
- UISegmentedControl
- codeforces 487C C. Prefix Product Sequence(数论+构造)
- HDU2767Proving Equivalences(强连通+缩点+ 至少加几条边让整个图变成强连通))
- uinavgationcontroller
- 在django中使用ueditor插件
- HDU 2767 Proving Equivalences && HDU 3836 Equivalent Sets 强连通
- 关于Android视图Measue阶段的问题
- Spark SQL and DataFrame Guide
- UI设计:空状态的设计值得更多关注
- JAX-RS:@PathVariable @RequestParam @ModelAttribute等参数绑定注解详解
- POJ 2371 Questions and answers(水~)