gpt4 book ai didi

c# - 为什么 `[DllImport]` 会以 `RtlSecureZeroMemory` 的入口点失败,即使它是一个有据可查的入口点?

转载 作者:行者123 更新时间:2023-12-03 11:06:46 24 4
gpt4 key购买 nike

尝试使用 kernel32 函数 SecureZeroMemory,使用下面的代码失败,并出现 System.EntryPointNotFoundException - 尽管它有很好的文档记录 here, on PInvoke , 和 here, on SO .在目标 .NET Framework 4.7.2 上运行完全正常的 Windows 10 Pro。

        /// <summary>
/// A kernel32 function that destroys all values in a block of memory
/// </summary>
/// <param name="destination">The pointer to the start of the block to be zeroed</param>
/// <param name="length">The number of bytes to zero</param>
/// <returns></returns>
[DllImport("kernel32.dll", CharSet = CharSet.Auto, EntryPoint = "RtlSecureZeroMemory")]
public static extern void SecureZeroMemory(IntPtr destination, IntPtr length);

最佳答案

此函数已记录,但您包含的两个链接都不是文档。要了解发生了什么,您应该首先阅读此处的实际文档:https://msdn.microsoft.com/en-us/library/windows/desktop/aa366877(v=vs.85).aspx

它说:

This function is defined as the RtlSecureZeroMemory function (see WinBase.h). The implementation of RtlSecureZeroMemory is provided inline and can be used on any version of Windows (see WinNT.h.)

“提供内联”的意思是函数在头文件中定义,而不是由任何系统 DLL 导出。这意味着它不能被 p/invoke 调用。

关于c# - 为什么 `[DllImport]` 会以 `RtlSecureZeroMemory` 的入口点失败,即使它是一个有据可查的入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com