【C++】C++中SDKDDKVer.h和WinSDKVer.h函数库详解

 目录

一.SDKDDKVer.h介绍

二.WinSDKVer.h介绍

三.WinSDKVer.h  和  SDKDDKVer.h  的区别


一.SDKDDKVer.h介绍

SDKDDKVer.h  是一个在 Windows 软件开发中常见的头文件,它用于定义软件开发工具包(SDK)和驱动开发工具包(DDK)的版本信息。这个文件通常位于 Visual Studio 安装目录下的  Include  子目录中。
 SDKDDKVer.h  包含了一些宏定义,这些宏定义用来指定当前使用的 Windows SDK 和 DDK 的版本。例如,它可能包含如下定义:

// 定义Windows SDK的版本
#define _WIN32_WINNT 0x0601 // 指定Windows 7的API支持// 定义DDK的版本信息
#define NTDDI_VERSION 0x06010000 // 对应Windows 7的DDK版本

使用这些宏定义,开发者可以确保他们的代码能够兼容特定版本的 Windows API 和 DDK API。如果你在开发 Windows 应用程序或驱动程序,并需要确保与特定版本的 Windows 兼容,你可能需要在你的项目设置中包含这个文件。

二.WinSDKVer.h介绍

WinSDKVer.h  是一个在 Windows SDK(软件开发工具包)中使用的头文件,它用于定义 Windows SDK 的版本信息。这个文件通常位于 Windows SDK 的安装目录下的  Include  子目录中。

在 Windows SDK 中, WinSDKVer.h  包含了一些预处理器宏定义,这些宏定义帮助开发者确定他们正在使用的 SDK 版本。例如,它可能包含如下定义:

// 定义Windows SDK的主要版本号
#define WINVER 0x0A00 // 对应Windows 10的版本号// 定义Windows SDK的构建版本
#define _WIN32_WINNT 0x0A00 // 指定Windows 10的API支持// 定义Windows SDK的版本号
#define NTDDI_VERSION 0x0A000000 // 指定Windows 10的DDK版本

这些宏定义允许开发者在他们的代码中使用条件编译来确保兼容性,或者调用特定版本的 Windows API。例如,通过设置  WINVER  或  _WIN32_WINNT ,开发者可以确保他们的应用程序只使用特定版本的 Windows 支持的 API。

三.WinSDKVer.h  和  SDKDDKVer.h  的区别

 WinSDKVer.h  和  SDKDDKVer.h  都是用于定义 Windows 软件开发工具包(SDK)和驱动开发工具包(DDK)版本信息的头文件,但它们的作用和使用场景略有不同:

1. WinSDKVer.h:

这个头文件主要用于定义 Windows SDK 的版本信息。

它通常包含定义操作系统版本和API级别的宏,如  WINVER  和  _WIN32_WINNT 。

开发者通过设置这些宏来指定他们希望应用程序使用的 Windows 版本和API集。

它通常用于应用程序开发,以确保应用程序能够使用特定版本的 Windows API。

2. SDKDDKVer.h:

这个头文件用于定义 Windows SDK 和 DDK 的版本信息。

它不仅包含 Windows SDK 的版本信息,还可能包含驱动开发相关的宏定义,如  NTDDI_VERSION 。

 NTDDI_VERSION  宏定义用于指定驱动程序开发时所针对的 Windows 版本,这对于驱动程序的兼容性至关重要。

它更多地用于驱动程序开发,以确保驱动程序能够与特定版本的 Windows 操作系统兼容。

简而言之, WinSDKVer.h  更侧重于应用程序开发,而  SDKDDKVer.h  则更侧重于驱动程序开发。然而,在实际使用中,这两个文件可能都会包含一些重叠的宏定义,用于确保代码的兼容性。开发者应该根据自己的开发需求和目标平台来选择合适的宏定义进行设置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【触摸屏】【地震知识宣传系统】功能模块:视频 + 知识问答

项目背景 鉴于地震知识的普及对于提升公众防灾减灾意识的重要性,客户希望开发一套互动性强、易于理解的地震学习系统,面向公众、学生及专业人员进行地震知识教育与应急技能培训。 产品功能 系统风格:严谨的设计风格和准确的信息呈现&#…

获取 GPU 使用率最低的 CUDA 设备

获取 GPU 使用率最低的 CUDA 设备 要获取 GPU 使用率最低的 CUDA 设备,我们可以使用 Python 结合 NVIDIA 的 pynvml 库。这个库允许我们访问 NVIDIA GPU 的各种信息,包括使用率。下面是一个实现这个功能的 Python 脚本: import pynvmldef ge…

红酒的艺术之旅:品味、鉴赏与生活的整合

在繁忙的都市生活中,红酒如同一道不同的风景线,将品味、鉴赏与日常生活巧妙地整合在一起。它不仅仅是一种饮品,更是一种艺术,一种生活的态度。今天,就让我们一起踏上这趟红酒的艺术之旅,探寻雷盛红酒如何以…

Android12 persist.sys.usb.config值更新

adb的相关控制 在android 4.0 之后,adb 的控制统一使用了persist.sys.usb.config来控制,而这个persist.sys.usb.config 中的adb是根据ro.debuggable 1 or 0 来设置,1 就是开启adb, 0 即关闭adb debug. 有两个地方影响 build/tools/post_pr…

【qt】如何读取文件并拆分信息?

需要用到QTextStream类 还有QFile类 对于文件的读取操作我们可以统一记下如下操作: 就这三板斧 获取到文件名用文件名初始化文件对象用文件对象初始化文本流 接下来就是打开文件了 用open()来打开文件 用readLine()来读取行数据 用atEnd()来判断是否读到结尾 用split()来获取…

02. Hibernate 初体验之持久化对象

1. 前言 本节课程让我们一起体验 Hibernate 的魅力!编写第一个基于 Hibernate 的实例程序。 在本节课程中,你将学到 : Hibernate 的版本发展史;持久化对象的特点。 为了更好地讲解这个内容,这个初体验案例分上下 2…

go-高效处理应用程序数据

一、背景 大型的应用程序为了后期的排障、运营等,会将一些请求、日志、性能指标等数据保存到存储系统中。为了满足这些需求,我们需要进行数据采集,将数据高效的传输到存储系统 二、问题 采集服务仅仅针对某个需求开发,需要修改…

防火墙小试——部分(书接上回)

toop接上回 1.实验拓扑及要求 前情回顾 DMZ区内的服务器,办公区仅能在办公时间内(9:00 - 18:00)可以访问,生产区的设备全天可以访问. 生产区不允许访问互联网,办公区和游客区允许访问互联网 …

C#统一委托Func与Action

C#在System命名空间下提供两个委托Action和Func,这两个委托最多提供16个参数,基本上可以满足所有自定义事件所需的委托类型。几乎所有的 事件 都可以使用这两个内置的委托Action和Func进行处理。 Action委托: Action定义提供0~16个参数&…

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体

本文目录 一、引言二、开发准备三、代码开发四、使用亮数据进行高效爬取4.1 为什么需要亮数据4.2 如何使用亮数据 五、使用数据训练AI智能体六、 总结 一、引言 在当今AI迅速发展的时代,招聘市场正经历着前所未有的变革。传统的招聘方式已难以满足双方的需求。AI智…

ShardingSphere-JDBC —— 整合 mybatis-plus,调用批量方法执行更新操作扫所有分表问题

文章目录 过程及问题描述原因及方案 记录下 ShardingSphere 整合 mybatis-plus 进行批量更新时扫所有分表问题的原因及解决方案。ShardingSphere 整合 mybatis-plus 与整合 mybatis 流程是一样的,一个是导入 mybatis 包,一个是导入 mybatis-plus 包&…

canvas快速入门(一)canvas的基础使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1. canvas的两种创建方式及优劣 2. canvas宽高设置及注意事项 3. 简单测例 项目结构&#xff1a; 源码&#xff1a; index.html <!DOCTYPE html> <html lang"en"> <head><meta charset…

7.7 CyclicBarrier

CyclicBarrier 循环栅栏&#xff0c;用来进行线程协作&#xff0c;等待线程满足某个计数。构造时设置【计数个数】。每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待&#xff0c;当等待的线程数满足【计数个数】时&#xff0c;继续执行。 Slf4j(topic "…

MySQL学习记录 —— 십구 命令执行

文章目录 1、mysql客户端命令2、从.sql文件执行SQL语句 1、mysql客户端命令 使用mysql时&#xff0c;命令行要以分号或者\g&#xff0c;\G来结束。 mysql客户端的很多命令可以在之前的mysql博客中查看。另外的用help或\h命令来查看。本篇写一些之前没有提到过的。 命令结束符…

先天睡功-守一老师

描述 守一老师&#xff0c;一个富有才华的老师&#xff01; 对于大家的学习有不可多得的帮助。 内容 目前主要的内容以睡觉为主&#xff0c;对于学习睡睡觉有比较大的帮助&#xff01; 但是网络上面错综复杂&#xff0c;很多老旧的版本影响学习&#xff01; 而这里我整理了…

安全防御实验2

一、实验拓扑 二、实验要求 办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换)分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器多出口环境基于带宽比例进行选路&#xff0c;但是&#xff0c;办公区…

数据建设实践之大数平台(六)安装spark

安装spark 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -xvf spark-3.3.1-bin-hadoop3.tgz -C /opt/services/ [bigdatanode101 software]$ tar -xvf spark-3.3.1-bin-without-hadoop.tgz -C /opt/services/ 重命名文件 [bigdatanode101 servic…

OZON夏季热卖产品有哪些,OZON夏季热卖新品

OZON平台在夏季的热卖产品种类繁多&#xff0c;涵盖了多个领域&#xff0c;主要包括但不限于以下几个方面&#xff0c;接下来看看OZON夏季热卖产品有哪些&#xff0c;OZON夏季热卖新品&#xff01;Top1 运动套装 Костюм спортивный Victorias Secret 商品id…

c++课后作业

把字符串转换为整数 int main() {char pn[21];cout << "请输入一个由数字组成的字符串&#xff1a; ";cin >> pn;int last 0;int res[10];int j strlen(pn);int idx 2;cout << "请选择&#xff08;2-二进制&#xff0c;10-十进制&#xf…

【C++】C++入门实战教程(打造属于自己的C++知识库)

目录 目录 写在前面 1.C学习路线 2.本教程框架介绍 一.C基础部分 1.程序编码规范 2.程序运行与编译 3.关键字 4.常用数据类型 5.运算符相关 二.C进阶部分 1.面向对象编程 2.函数编程 3.模板编程 4.多线程与并发 5.STL介绍及使用 6.内存模型与优化 三.C实战部…