Windows API 保留参数

2023-11-23

我想知道为什么有些函数有一些参数由于“保留参数”而必须设置为 NULL。例如:

LONG WINAPI RegQueryValueEx(
  __in         HKEY hKey,
  __in_opt     LPCTSTR lpValueName,
  __reserved   LPDWORD lpReserved,
  __out_opt    LPDWORD lpType,
  __out_opt    LPBYTE lpData,
  __inout_opt  LPDWORD lpcbData
);

我不明白为什么 lpReserved 存在?我的意思是,如果它是保留的为什么要放它,直接省略它不是更简单吗?

谢谢! :)(请不要注意我的英语..)


我认为至少有两个原因。

一种是保留该参数以供将来使用和可能的功能扩展。确保它设置为NULL可以在某种程度上保证将来添加新功能时不会破坏旧程序。

第二个可能的原因是该参数实际上可以在内部用作私有 API 的一部分,而 API 的公共部分则要求将此参数设置为NULL.

为什么不完全省略它呢?以后在不改变接口的情况下扩展系统的功能要容易得多。它保持与旧 API 的二进制和源代码兼容,并且不需要重建旧软件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows API 保留参数 的相关文章

  • Windows下Kafka托管在Docker中删除主题时出现异常

    我在 Windows 的 Docker 中托管 Kafka 威斯迈斯特 卡夫卡 https hub docker com r wurstmeister kafka 使用 docker 镜像 Kafka 数据存储在本地 Windows 文件夹
  • 避免 Inno Setup 中的“无法展开 shell 文件夹常量 userdocs”错误

    我将一些示例文档安装到 Windows 上标准 我的文档 文件夹的 PerfectTablePlan 子文件夹中 这对于 99 以上的用户来说效果很好 但是 如果用户没有 我的文档 文件夹 我会收到许多以下形式的丑陋错误消息 内部错误 无法
  • 传递给命令 WPF 的多个参数[重复]

    这个问题在这里已经有答案了 我有以下层次结构 abstract class TicketBase public DateTime PublishedDate get set class TicketTypeA TicketBase publ
  • 在ASP CLASSIC中使用SQL参数,对象定义不正确错误

    我试图使用参数保护我的 INSERT 语句免受 SQL 注入 但由于某种原因我收到错误 Parameter object is improperly defined Inconsistent or incomplete informatio
  • 如何在 PowerShell 中键入 TAB 字符?

    Task 默认情况下 在 Windows 命令提示符中按 TAB 键将输出文件名 而在 PowerShell 中则不会执行任何操作 我希望能够在交互模式下键入 TAB 字符 而不是通过脚本 Research 我在这个网站上和通过谷歌搜索发现
  • NtDll 真的导出 C 运行时函数吗?我可以在我的应用程序中使用这些函数吗?

    我在查看 Windows 10 计算机上的 NtDll 导出表 发现它导出标准 C 运行时函数 例如memcpy sprintf strlen etc 这是否意味着我可以在运行时动态调用它们LoadLibrary and GetProcAd
  • 如何让脚本执行结束后自动删除?

    是否可以制作一个Python脚本 在Windows中执行结束时删除 py文件 自删除 这种方式使您的程序不依赖于操作系统 from os import remove from sys import argv remove argv 0 奖励
  • 批处理文件 FOR /f 标记

    任何人都可以逐行准确解释以下代码是如何工作的 我真的迷路了 我一直在尝试学习如何使用 FOR 命令 但我不明白这一点 echo off for f tokens delims f in myfile do set line f call p
  • 导入错误:无法导入名称线程

    这是我第一次学习Python 我继续尝试线程这篇博文 http www saltycrane com blog 2008 09 simplistic python thread example 问题是它似乎已经过时了 import time
  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • MoveWindow死锁?

    我在线程 A 上有一个窗口 它在某个时刻 由于在其 wndproc 上收到消息 触发线程 B 上的操作 然后等待该操作完成 使用某种同步机制 然后线程B调用MoveWindow 在线程 A 的窗口 例如标准文本框 内移动子窗口 此时程序由于
  • 用于验证 IIS 设置的 Powershell 脚本

    是否可以使用 Power Shell 脚本获取 IIS 设置 我希望使用脚本获取 检查以下信息 检查 Windows 身份验证提供程序是否正确列出 协商 NTLM 检查是否启用了 Windows 身份验证 Windows 身份验证高级设置
  • 移动/调整窗口大小时闪烁

    我开发了一个显示 jpeg 图像的应用程序 它可以显示 4 个图像 屏幕的每个象限各一个 为此 它使用了 4 个窗口 窗口没有边框 框架 也没有标题栏 当加载新图像时 窗口大小会根据新图像进行调整 然后显示该图像 尤其是当窗户做得较大时 经
  • 检测计算机何时解锁 Windows

    我用过这个优秀的方法 https stackoverflow com questions 20733441 lock windows workstation using python 20733443锁定 Windows 计算机 那部分工作
  • 如何在Windows上分离“Git bash”中启动的“git gui”?

    例如 我开始 git bash 我导航到某个目录 I start git gui 我关闭控制台窗口或按 Ctrl C Git gui 的窗口消失了 即使我用过git gui disown 即使当我按 Ctrl C 时它不在前台 如何正确分离
  • 取消后调用 boost::asio 异步处理程序没有错误

    我的代码在单个线程中使用 boost asio 和 io service 来执行各种套接字操作 所有操作都是异步的 每个处理程序都依赖于boost system error code 特别boost asio error operation
  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用

随机推荐

  • 将组平均值分配给 python/pandas 中的每一行

    我有一个数据框 我希望根据商店和所有商店计算平均值 我创建了代码来计算平均值 但我正在寻找一种更有效的方法 DF Cashier Store Sales Refunds 001 001 100 1 002 001 150 2 003 001
  • Feign 多部分与 Json 请求部分

    我在一项服务中使用一种方法有 Feign 客户端 PostMapping consumes MediaType MULTIPART FORM DATA VALUE MyDto uploadDocument RequestPart file
  • C++ while 和 do while 之间的区别? [复制]

    这个问题在这里已经有答案了 我希望有人解释一下 C 中 while 和 do while 之间的区别 我刚刚开始学习 C 通过这段代码 我似乎得到了相同的输出 int number 0 while number lt 10 cout lt
  • 在 Eclipse 中运行我的签名发布密钥库时出现问题

    我无法在 Eclipse 中运行我已签名的发布密钥库 我收到错误 Keystore was tampered with or password was incorrect 我该如何解决这个问题 Here is the error Here
  • 从 asp.net C# 调用外部 json webservice

    我需要从 C Asp net 调用 json Web 服务 该服务返回一个 json 对象 并且 web 服务想要的 json 数据如下所示 data my data 这是我想出的 但我无法理解如何将数据添加到我的请求中并发送它 然后解析我
  • Ruby 中的方法:是否是对象?

    灵感来自这次讨论 经过一番谷歌搜索后 我无法找到关于 Ruby 中的方法的一个非常简单的问题的答案 方法是对象还是不是对象 有不同意见here and there 我真的很想听到 比如说 一个深入的解释 我知道Object method方法
  • 我应该使用 AppDomain.CurrentDomain.BaseDirectory 还是 System.Environment.CurrentDirectory?

    我在同一个文件夹中有两个 exe 文件 我可以通过 exe1 中的按钮运行 exe2 今天 我通过远程 终端服务 会话观察客户 exe2 无法运行 文件未找到 错误 但当我们检查时 exe1 位于同一目录中 所以我应该使用AppDomain
  • Tab 键在 Chrome 扩展的弹出窗口中不起作用

    我创建了一个 chrome 扩展 其中有一个弹出窗口 其中包含以下 HTML 标记
  • H264 视频使用 src 属性工作。使用 MediaSource API (Chromium) 相同视频失败

    http www youtube com html5表示 Google Chrome 兼容 MediaSource Extensions 和 H 264 我做了一个简单的测试 检查我的视频是否受 Chromium 支持 使用 视频 gt 视
  • 防止直接从 amazon s3 下载音频文件

    我在 Amazon S3 中存储了音频文件 可以从基于 Web 的音乐播放器应用程序以及移动应用程序访问这些音频文件 即使未登录的用户也应该能够访问音乐 但是我不希望人们使用该链接来下载内容 这可以在 s3 中完成吗 谢谢 您可以根据 HT
  • 如何用Java代码配置Logback来设置日志级别?

    我想使用默认的 SLF4J Logback 配置 除了设置org springframework data document mongodb日志记录级别为DEBUG 我怎样才能用Java代码做到这一点 我没有使用 XML 并且这个决定是在运
  • MATLAB 中的高效低秩逼近

    我想计算一个矩阵的低秩近似 该矩阵在弗罗贝尼乌斯范数下是最佳的 实现此目的的简单方法是计算矩阵的 SVD 分解 将最小奇异值设置为零 并通过乘以因子来计算低秩矩阵 在 MATLAB 中是否有一种简单且更有效的方法来做到这一点 如果您的矩阵稀
  • Laravel 带有正则表达式的可选前缀路由

    有没有办法创建带有前缀的路由 这样我就可以拥有这样的路由 articles html gt goes to listing Controller in default language en articles html gt goes to
  • 气流 外部传感器卡在戳戳处

    我希望一个 dag 在另一 dag 完成后开始 一种解决方案是使用外部传感器功能 您可以在下面找到我的解决方案 我遇到的问题是依赖的 dag 卡在 poking 上 我检查了这个answer并确保两个 dags 按相同的时间表运行 我的简化
  • 将“元组列表”转换为平面列表或矩阵

    使用 Sqlite select from命令返回结果output 打印 gt gt print output 12 2817 12 2817 0 0 8 52 8 52 它似乎是一个元组列表 我想转换output一个简单的列表 12 28
  • Firebase 真正的离线功能

    我正在尝试了解 Android 上的 Firebase 离线功能实际上能达到什么程度 据我了解 应该可以使数据库 持久化 FirebaseDatabase getInstance setPersistenceEnabled true 文档内
  • 我应该将 go depvendor/ 添加到 .gitignore 吗? [复制]

    这个问题在这里已经有答案了 我应该添加go dep vendor 文件夹到 gitignore 我现在有vendor in gitignore 所以每次部署都会调用dep ensure github gitignore Go gitigno
  • 滤波器阵列 - 奇偶

    如何过滤掉具有奇数或偶数索引号的数组条目 Array 0 gt string1 1 gt string2 2 gt string3 3 gt string4 就像 我希望它从数组中删除 0 和 2 条目 或者说我有 0 1 2 3 4 5
  • 良好的线程 C++ 库

    我更喜欢仅基于 pthreads 的库 对于线程来说 什么是好的 C 库 怎么样增强线程 Boost Thread 允许使用 多线程执行 可移植 C 代码中的共享数据 它 提供类和函数 管理线程本身 与其他人同步数据 线程之间或提供 特定于
  • Windows API 保留参数

    我想知道为什么有些函数有一些参数由于 保留参数 而必须设置为 NULL 例如 LONG WINAPI RegQueryValueEx in HKEY hKey in opt LPCTSTR lpValueName reserved LPDW