`
yexin218
  • 浏览: 973028 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

如何在内核中获得当前系统时间

阅读更多

在 Windows NT 内核中你是无法使用 time.h 获取当前系统时间的,这个时候你需要用到 Wdm.h(你可以 include Wdm.h, Ntddk.h, 或 Ntifs.h)里面提供的 KeQuerySystemTime() 函数。这个函数和相关头文件需要 Windows 2000, Windows Vista 或者 Windows 7 等 NT 系统。

函数原型:

VOID KeQuerySystemTime(
__out  PLARGE_INTEGER CurrentTime
);

参数:

CurrentTime [out]

这是一个指向当前系统时间的指针。

备注:

系统时间是一个以 100 纳秒为单位从 1601 年 1 月 1 日开始计算的 64 位有符号整数。以下是有关于这个 64 位的 LARGE_INTEGER 的结构:

typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG  HighPart;
} ;
struct {
DWORD LowPart;
LONG  HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
>

实际上这是一个为了防止你没有 64 位字符定义而设立的兼容性数据结构。当然如果你有 LONGLONG 定义的话,你可以直接使用里面的 QuadPart 作为你需要使用的时间。例如:

LONGLONG Timer;
LARGE_INTEGER timeUTC;
KeQuerySystemTime(&timeUTC);
Timer = timeUTC.QuadPart;

如上即可。

 

来自一位学弟的博客:http://valencyding.wordpress.com

分享到:
评论

相关推荐

    Linux系统调用(返回当前的系统时间)

    本文还着重介绍了如何在Linux系统调用中返回当前系统时间。系统调用可以用来获取内核维护的当前系统时间。Linux内核提供了一个名为 get_jiffies_64() 的函数,它可以返回当前系统的时间,通常以时钟周期数(jiffies...

    多任务内核分析 多任务操作系统介绍

    例如,在实时嵌入式系统中,内核通常采用抢占式调度算法,以便能够在规定时间内完成特定的任务。 #### 五、案例分析:基于嵌入式系统的多任务处理 在给定的部分内容中,提到了一个具体的案例——基于嵌入式系统的...

    操作系统Linux内核编译实验报告.docx

    2. **查看系统信息**:使用`uname -a`命令可以查看当前系统的内核版本和其他相关信息。 3. **下载和编译内核**: - 下载新的内核源代码,这里使用的是Linux 3.13.6版本。 - 解压下载的内核文件,然后进入解压后的...

    Linux操作系统内核的升级.

    ### Linux操作系统内核的升级 #### 一、引言 Linux是一种开源的多任务操作系统,以其高度的灵活性、丰富的功能...通过上述步骤,用户可以顺利完成Linux内核的升级,从而获得一个更加高效、稳定且安全的操作系统环境。

    凝思V6.0.80系统内核升级说明书及包.zip

    在IT领域,操作系统内核是计算机系统的核心部分,它负责管理硬件资源,提供基础服务给上层应用程序。本文将详细探讨“凝思V6.0.80系统内核升级”这一主题,包括升级的必要性、流程、注意事项以及可能遇到的问题。 ...

    linux内核时间[PPT下载]

    Linux内核通过I/O操作访问RTC,获取当前时间并更新内核的时间状态。 2. **系统时钟与时钟中断** - 系统时钟是由硬件时钟触发的软件时钟,一般每秒产生几百到几千次的中断,称为时钟中断。每次时钟中断都会调用内核...

    linux操作系统内核升级包

    3. **配置内核**:进入解压后的目录,运行 `make oldconfig` 来基于当前系统的配置更新新的内核配置。然后,通过 `make menuconfig` 或 `make xconfig` 打开图形化配置界面,根据需要自定义内核选项。 4. **编译...

    疯狂内核之——内核初始化

    - **BIOS时代**: BIOS(基本输入/输出系统)是一种位于ROM中的固件程序,用于在启动过程中初始化、测试系统硬件功能,并加载操作系统引导程序。BIOS通过一系列自检程序来验证硬件的状态,并提供最基本的硬件控制。 -...

    Linux操作系统内核的时钟中断机制.pdf

    1. **持续记录当前的时间和日期**:这种需求主要用于为内核中的某些对象或事件打上时间戳,或者允许用户通过系统调用获取当前时间。 2. **维持一个固定周期的定时器**:这种定时器提醒内核或用户一段时间已经过去,...

    取系统开机时间,不包含用户输入密码登录系统的停留时间

    在IT领域,获取系统开机时间是一项常见的任务,尤其在系统监控、日志分析以及性能测试等场景中。这里,我们关注的是系统从启动到用户成功输入密码并登录这段时间,不包括用户登录后的停留时间。这样的需求可能出于...

    操作系统课程设计之系统调用返回时间

    本课程设计项目旨在让学生深入了解系统调用的工作原理,并实际动手实现一个简单的系统调用——返回当前系统时间。这不仅有助于学生掌握系统调用的基本概念和技术细节,还能提高学生对操作系统底层机制的理解能力。 ...

    操作系统实验四:统计操作系统缺页次数

    在系统重启后,执行模块代码,读取 pfcount 值,获取缺页次数。 四、知识点总结 * 虚拟内存技术的基本原理 * Linux 虚拟内存管理技术 * 按需调页过程 * 内核模块的概念和操作方法 * 向/proc 文件系统中增加文件的...

    my_syscall.zip_my_syscall_syscall_内核模块_系统调用

    总结起来,"my_syscall"项目展示了如何利用内核模块技术在Linux系统中添加自定义系统调用,以便获取系统时间。这个过程涉及内核编程、系统调用表操作、用户空间与内核空间交互等多个核心概念,对于理解和学习Linux...

    Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

    在Linux系统中,栈可以分为进程栈、线程栈、内核栈以及中断栈。 首先,我们需要了解栈(Stack)的基本概念。栈是一种后进先出(LIFO, Last In First Out)的数据结构,它允许数据被存储和检索,但只允许在一段称为...

    Android中如何修改系统时间(两种方法)

    在Android系统中,修改系统时间通常涉及到安全性和应用程序的正确运行。系统时间是操作系统的核心组件之一,用于跟踪日期和时间,对于同步、日志记录和其他关键功能至关重要。下面将详细介绍两种在Android中修改系统...

    关于Linux系统内核抢占补丁的原理说明

    Linux系统内核抢占补丁是Linux内核中用于提高系统响应性和实时性的关键特性,尤其在多处理器(SMP)环境中。在不支持抢占的内核中,一旦一个进程进入内核模式,就无法被其他高优先级进程打断,这可能导致用户感知到...

    Linux内核同步机制

    这便会发生所有内核任务都在相互等待,但它们永远不会释放已经占有的资源,于是任何内核任务都无法获得所需要的资源,无法继续运行这便意味着死锁发生了。 五、总结 Linux 内核同步机制是指内核中用于避免并发和...

    一键刷内核.zip

    在计算机科学中,尤其是对于Linux系统,"刷内核"是指升级或更换操作系统的内核版本,以获取新功能、优化性能或者支持特定硬件。"一键刷内核"通常指的是简化了这个过程的工具或方法,使得用户无需深入理解内核编译...

    Linux内核设备驱动之内核的时间管理笔记整理

    本文主要围绕内核中的时间概念、HZ值、全局变量jiffies以及如何获取当前时间这几个方面进行阐述。 首先,内核中的时间概念包括绝对时间和相对时间,以及周期性事件和推迟执行的事件。绝对时间是指特定时刻,如日期...

    Linux内核编译与裁剪

    - **备份当前内核**:在升级之前,一定要备份当前正在运行的内核版本。 - **获取新内核源码**:从官方渠道获取最新的内核源码。 - **重新配置和编译**:根据新的硬件特性重新配置内核,并进行编译。 - **安装...

Global site tag (gtag.js) - Google Analytics