我对在某个寻路示例中找到的代码感到困惑:
[System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]
public unsafe static extern bool ZeroMemory(byte* destination, int length);
这是什么意思?为什么导入中有括号?
答案 0 :(得分:4)
DllImportAttribute
指示链接器在何处查找此函数的代码。这就是你的程序在你打电话时知道该怎么做的方式。
在此特定情况下,该属性表示ZeroMemory
方法的实现存在于kernel32.dll
中,并将其导出为RtlZeroMemory
。
答案 1 :(得分:1)
这是一个互操作性属性。它允许开发人员通过.NET API调用其他库中的非托管代码。
有问题的地方是指定ZeroMemory方法的实际实现在外部dll“Kernel32.dll”
答案 2 :(得分:0)
DllImportAttribute指示链接器动态链接到外部程序集中的方法。
该属性包含必需参数和可选参数。 可选参数按名称调用。
在这种情况下,参数是程序集的名称以及调用它的方法的名称。