这个属性是什么?

时间:2011-05-08 19:46:03

标签: c# interop

我对在某个寻路示例中找到的代码感到困惑:

[System.Runtime.InteropServices.DllImport("KERNEL32.DLL", EntryPoint="RtlZeroMemory")]
public unsafe static extern bool ZeroMemory(byte* destination, int length);

这是什么意思?为什么导入中有括号?

3 个答案:

答案 0 :(得分:4)

DllImportAttribute指示链接器在何处查找此函数的代码。这就是你的程序在你打电话时知道该怎么做的方式。

在此特定情况下,该属性表示ZeroMemory方法的实现存在于kernel32.dll中,并将其导出为RtlZeroMemory

答案 1 :(得分:1)

这是一个互操作性属性。它允许开发人员通过.NET API调用其他库中的非托管代码。

有问题的地方是指定ZeroMemory方法的实际实现在外部dll“Kernel32.dll”

答案 2 :(得分:0)

DllImportAttribute指示链接器动态链接到外部程序集中的方法。

该属性包含必需参数和可选参数。 可选参数按名称调用。

在这种情况下,参数是程序集的名称以及调用它的方法的名称。