相关疑难解决方法(0)

C#:如何将null传递给期望ref的函数?

我有以下功能:

public static extern uint FILES_GetMemoryMapping(
    [MarshalAs(UnmanagedType.LPStr)] string pPathFile,
    out ushort Size,
    [MarshalAs(UnmanagedType.LPStr)] string MapName,
    out ushort PacketSize,
    ref Mapping oMapping,
    out byte PagesPerSector);
Run Code Online (Sandbox Code Playgroud)

我想这样称呼:

FILES_GetMemoryMapping(MapFile, out size, MapName,
    out PacketSize, null, out PagePerSector);
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法传递null一个需要类型的字段ref Mapping而且没有投射我已经尝试修复此问题.

有什么建议?

c# parameters null pinvoke ref

33
推荐指数
4
解决办法
4万
查看次数

如何在C#中处理null或者可选的dll struct参数

如何struct使用pinvoke 处理从C#调用的dll方法中的可选参数?例如,lpSecurityAttributes此处参数应该null在不存在时传递.

正确的传递方式struct似乎正在使用ref,但它不能有可选参数,或者null总的来说.

有什么方法可以达到这个目的?

c# null pinvoke interop optional-parameters

13
推荐指数
1
解决办法
1172
查看次数

如何将可空类型传递给P /调用函数

我有几个p /被调用的函数(但我现在正在重写我的代码所以我正在整理)我想知道如何使用/传递一个可空类型作为参数之一.使用int类型不是问题,但给出以下内容:

[DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)]
    static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, int? enumerator, IntPtr hwndParent, uint Flags);
Run Code Online (Sandbox Code Playgroud)

我希望能够将Guid参数作为可空类型传递.就目前而言,我可以将其称为:

SetupDiGetClassDevs(ref tGuid, null, IntPtr.Zero, (uint)SetupDiFlags.DIGCF_PRESENT );
Run Code Online (Sandbox Code Playgroud)

但我需要第一个参数也可以通过null.

.net c# pinvoke interop optional-parameters

12
推荐指数
1
解决办法
3742
查看次数

标签 统计

c# ×3

pinvoke ×3

interop ×2

null ×2

optional-parameters ×2

.net ×1

parameters ×1

ref ×1