警告 C4267“参数”:从“size_t”转换为“DWORD”,可能会丢失数据

2024-02-26

我正在将代码从 32 位 vs2012 迁移到 64 位 vs2015。

我在程序中遇到了以下函数调用:

CryptHashData(hHash, 
                (BYTE*)AUTH_ENCRYPTION_KEY, 
                   wcslen(AUTH_ENCRYPTION_KEY) * sizeof(wchar_t), 
                   0u))

其声明位于wincrypt.h位于c:\Program Files (x86)\Windows Kits\8.0\Include\um\wincrypt.h(看起来没有被编辑)。

声明是:

WINADVAPI
BOOL
WINAPI
CryptHashData(
_In_                    HCRYPTHASH  hHash,
_In_reads_bytes_(dwDataLen)  CONST BYTE  *pbData,
_In_                    DWORD   dwDataLen,
_In_                    DWORD   dwFlags
);

DWORD dwFlags:这里的问题是0u是 unsigned int 并且该函数需要一个DWORD.

为了解决这个错误,我做了:

  • c-style铸造为(DWORD)(0U)在功能上call(tried size_t, unsigned int)
  • static_cast
  • 尝试创建一个新变量并将其强制转换

但警告仍然存在

看来我必须改变函数调用

有人可以建议我如何解决这个问题。

请询问是否需要更多详细信息。

警告图像详细信息 https://i.stack.imgur.com/IfADP.png
稍后警告图像详细信息 https://imgur.com/a/Y0qzl


您认为 0u 是问题所在。
对我来说,问题似乎应该出在第三个参数上,其中 size_t 值用于提供双字参数。

正如SomeProgrammerDude所解释的,在新环境中size_t可能是64位,而DWORD是32位。这解释了新平台上的不匹配。

在 32 位平台上,您没有收到警告(我假设),可能是因为 size_t 在那里是 32 位,没有丢失信息的风险。

您报告说强制转换避免了警告,这表明0u不是问题。
事实上,该警告似乎与0u可能是由于编译器抱怨整个函数调用并指出它的结尾,即结束),它恰好与0u.
全部移动的实验)分隔线(结果可见,因为两个屏幕截图之间的差异)已经证实了这一点。

请注意,强制转换只是避免了警告,这与解决问题不同。
(您明智地询问了铸造的安全性,我建议在一个单独的问题中这样做。)

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

警告 C4267“参数”:从“size_t”转换为“DWORD”,可能会丢失数据 的相关文章

  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • 使用 GCHandle 将大型结构数组从 C# unity 脚本传递到 C++ dll 在 C++ 函数执行后崩溃

    我想从 C unity 脚本将结构数组传递给 c 本机插件 我做了如下操作 我可以访问数据 但我的应用程序在执行 c 函数后崩溃 我不知道为什么 C side StructLayout LayoutKind Sequential publi
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • 原子的 C++ 内存屏障

    在这方面我是个新手 谁能提供以下内存屏障之间差异的简化解释 窗户MemoryBarrier 围栏 mm mfence 内联汇编asm volatile memory 内在的 ReadWriteBarrier 如果没有简单的解释 一些好文章或
  • List 或其他类型上的 string.Join

    我想将整数数组或列表转换为逗号分隔的字符串 如下所示 string myFunction List
  • 删除数组时出现访问冲突异常

    删除分配的内存时 出现 访问冲突读取位置 异常 如下所示 我有一个针对 Visual Studio 2010 工具集 v100 C 编译器编译的本机 dll 我有一个针对它的托管 dll 包装器 它是针对工具集 v90 编译的 因为我想以
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • 按 Enter 继续

    这不起作用 string temp cout lt lt Press Enter to Continue cin gt gt temp cout lt lt Press Enter to Continue cin ignore 或更好 in
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些
  • 检查另一种形式的线程是否仍在运行

    我有一个涉及两个窗体的 Windows 窗体应用程序 子表单用于将数据导出到 CSV 文件 并使用后台工作者写入文件 当这种情况发生时 我隐藏了表格 当后台工作程序运行时 父窗体仍然处于活动状态 因此即使后台工作程序正在写入文件 用户也可以
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS

随机推荐

  • 函数使用 NRV 优化应遵循哪些规则

    我应该遵循哪些规则或技巧才能使函数能够在函数中使用 NRV 命名返回值 优化 我从不同的地方吸收了这些提示 但不知道我的理解是否正确 要返回的对象在函数内部不应该有任何名称 那为什么叫NAMED返回值优化 return 语句应该将对象用括号
  • 在 JDBC 应用程序中向前和向后移动 ResultSet 游标

    我正在开发一个库存系统软件 该软件使用 JDBC ODBC 连接连接到 Ms Sql 服务器 我想将结果集光标移动到下一行并向后移动 连接正常 程序可以从数据库中检索字段 因此没有问题 我这里的代码位于标有 下一步 的按钮上 当您单击此按钮
  • 谷歌表格中的印度短货币格式

    在谷歌表格中 我试图以印度 短 格式显示数字 并带有十万和千万后缀 如下所示 单元格值 1234 显示为1 23K 单元格值 12345 显示为12 35K 单元格值 123456 显示为1 23L L 十万 单元格值 1234567 显示
  • 在 React Router 中传递附加参数

    如何将附加参数传递给我要转换到的组件 我的routes js 如下 我声明了两条路径 一条用于authorList 另一条用于特定作者的详细信息 var routes
  • 如何在 C 中将数组的字符串元素连接成单个字符串?

    我有一个字符串数组 我想创建一个新字符串 它是所有数组元素的串联 任何帮助表示赞赏 谢谢 include
  • org.testng.TestNGException:在:[DynamicGraph 中找不到空闲节点

    我在 testng 中使用同一类的两种方法 但它不允许我这样 它给出了异常 org testng TestNGException 在 DynamicGraph 中找不到空闲节点 我的 testng 文件是
  • Zend Framework:在控制器名称/URL 中使用破折号

    我有一个网址 我希望看起来像http 服务器 我的 操作名称 http server my action name 显然 我不能在 ControllerName 函数中使用 并且下划线不起作用 这可能吗 默认情况下 http server
  • Apache 服务器忽略 .htaccess

    我试图让一个网站在我的测试环境中运行 但不知何故它无法运行 我可以加载正常的索引页面 但是当我想访问 page test 时 它会抛出一个错误 指出该页面不存在 我的日志说 File does not exist home page url
  • 使用 @mock.patch.object 模拟方法时返回值未按预期设置

    我的测试应该会成功 因为我用 mocker return value 给出了返回值 这应该为客户提供一个值 以便函数调用最终出现在 else 语句 客户找到 中 但事实并非如此 据我所知 返回值没有被正确模拟 但为什么呢 Mock from
  • Windows .bat/.cmd 函数库在自己的文件中?

    有构建函数的好方法 http www dostips com DtTutoFunctions php在 DOS bat cmd 脚本中 要模块化某些安装脚本 最好将带有函数库的文件包含到 bat cmd 脚本中 我尝试的是 主脚本 bat
  • BitArray - 移位

    我有一个 System Collections BitArray 数组 3000 个项目 我想将所有位向左移动 1 但是该集合似乎不支持该操作 即 bitArray Thanks 这个简单的代码片段展示了手动执行此操作的方法 的价值bitA
  • 返回空指针异常 - Java Selenium Webdriver

    使用 Java 在 Selenium WebDriver 中运行测试时出现空指针异常 由于某种原因 测试返回 null 即使所有内容都被正确声明 我认为 我在这里错过了什么 做错了什么 给定这段代码 public class HomePag
  • 熊猫通过重置获取累积总和

    Problem 我试图保留连续时间戳 分钟频率 的运行总数 我目前有一种方法可以获取累积和并在两列不匹配的情况下重置它 但它是通过 for 循环完成的 我想知道是否有一种方法可以在没有循环的情况下做到这一点 Code cb arbitrag
  • 为什么 opencsv 在写入文件时将 csv 标头大写

    使用 OpenCSV 4 6 将 Bean 写入 CSV 文件时 所有标题都更改为大写 尽管 bean 有 CsvBindByName 注释 但它正在更改为大写 Java 豆 public class ProjectInfo impleme
  • 如何在 SQLCMD 中抑制连字符

    如何从结果集中抑制连字符 sqlcmd命令 C temp gt sqlcmd d AdventureWorks s Q SET NOCOUNT ON SELECT top 5 FirstName LastName FROM Person C
  • 在 Windows 上将 PPT 转换为 JPG/PNG

    我想在 Windows 环境中以编程方式转换一组图像中的 ppt 演示文稿 每张幻灯片一个 我尝试修改以下将 ppt 转换为 pdf 的代码 完美工作 但没有成功 谁能帮我 多谢 Option Explicit Sub WriteLine
  • Pandas 显示 Excel 文件的额外未命名列

    我正在开发一个使用 pandas 库的项目 其中我需要读取一个包含以下列的 Excel 文件 invoiceid locationid timestamp customerid discount tax total subtotal pro
  • 桌面应用程序.net中的视频通话

    我正在开发一个 wpf 应用程序 该应用程序应该具有视频通话功能 所以我寻求 Skype 为我提供解决方案 我正在使用 Skype4COM 库来做到这一点 我的应用程序中包含了 Skype 的所有朋友 我可以给朋友打电话 甚至可以进行视频通
  • 判断文件中是否存在字符串

    我有一个字符串列表 例如 John John Doe 彼得潘 在 txt 文件中 我想创建一个循环来检查某个名称是否存在 但是 如果我搜索 Peter 并且只存在 Peter Pan 我不希望这是真的 每行都必须完全匹配 哈哈 ep0的回答
  • 警告 C4267“参数”:从“size_t”转换为“DWORD”,可能会丢失数据

    我正在将代码从 32 位 vs2012 迁移到 64 位 vs2015 我在程序中遇到了以下函数调用 CryptHashData hHash BYTE AUTH ENCRYPTION KEY wcslen AUTH ENCRYPTION K