Mono.Cecil - 如何找到 PInvoke DLL 名称?
Mono.Cecil - How can I found out PInvoke DLL name?
Mono.Cecil 提供了一种通过 method.IsPInvokeImpl
检查方法是否为 pinvoke 的方法,还通过 method.PInvokeInfo
提供了更多信息。我怎样才能找到 dll 名称?
P/Invoke 方法的 IL 如下所示(例如,kernel32!LockFile
):
.method assembly hidebysig static pinvokeimpl("kernel32.dll" lasterr winapi)
bool LockFile (
class Microsoft.Win32.SafeHandles.SafeFileHandle handle,
int32 offsetLow,
int32 offsetHigh,
int32 countLow,
int32 countHigh
) cil managed preservesig
{
}
Mono.Cecil 镜像 PInvokeInfo
class 中的 pinvokeimpl
元数据,第一个字符串打包为 ModuleReference
。因此,method.PInvokeInfo.Module.Name
给出了 DLL/dylib 名称。
Mono.Cecil 提供了一种通过 method.IsPInvokeImpl
检查方法是否为 pinvoke 的方法,还通过 method.PInvokeInfo
提供了更多信息。我怎样才能找到 dll 名称?
P/Invoke 方法的 IL 如下所示(例如,kernel32!LockFile
):
.method assembly hidebysig static pinvokeimpl("kernel32.dll" lasterr winapi)
bool LockFile (
class Microsoft.Win32.SafeHandles.SafeFileHandle handle,
int32 offsetLow,
int32 offsetHigh,
int32 countLow,
int32 countHigh
) cil managed preservesig
{
}
Mono.Cecil 镜像 PInvokeInfo
class 中的 pinvokeimpl
元数据,第一个字符串打包为 ModuleReference
。因此,method.PInvokeInfo.Module.Name
给出了 DLL/dylib 名称。