将偏移量添加到 IntPtr
我正在寻找一种在 C# 或 .NET 中执行指针操作的方法。 我想做一些非常简单的事情 有一个指针 IntPtr 我想获得指向前面 2 个字节的 IntPtr 对象。 我读…
统一处理非托管 API 中的错误代码
我正在围绕一个相当大的非托管 API 编写一个包装器。几乎每个导入的方法在失败时都会返回一个常见的错误代码。现在,我正在这样做: ErrorCode result…
处理此结构和方法的正确 C# 互操作代码是什么?
我正在围绕非托管 DLL 编写托管包装器,但无法正确编组以下方法和结构。以下是 .h 文件中非托管代码的内容: typedef struct { WORD PI_code; DWORD g…
为什么我无法通过 pinvoke 让 GetPrivateProfileString 工作?
运行我在 64 位 Vista 上编写的 ac# 控制台应用程序。代码如下: class Class1 { static void Main(string[] args) { Debug.Assert(File.Exists(@"c:\…
在哪里可以了解有关 P/Invoke 的更多信息?
最近,我一直在与非托管库进行大量交互,并且我不断回到 SO 询问有关某些方法签名的问题,因为我不是 C/C++ 程序员(尽管这对我来说并不完全陌生)。…
将 Delphi 5 OleVariant 封送至 C#
我正在尝试使用 C# (2.0/3.5) 中的一些遗留 Delphi 5 DLL。一些导出的函数是这样声明的: function SimpleExport: OleVariant; stdcall; function BiD…
如何使用 P/Invoke 将 unsigned long 传递给 Linux 共享库
我在 Mono 中使用 C#,并尝试使用 pinvoke 来调用 Linux 共享库。 c# 调用定义为: [DllImport("libaiousb")] extern static ulong AIOUSB_Init(); Li…
为什么在 DllImport 返回值中用 IntPtr 或 StringBuilder 替换 char[] 会导致我的程序不再找到正确的入口点?
编辑:我刚刚意识到这是定义为宏,而不是函数。我到底如何将宏从 DLL 导入到 C# 中? (这可能是一个新问题)。 这与我刚刚问的一个问题有关: 我该怎…
WTSQueryUserToken 失败,getlasterror() 返回 1723
我有一个在系统帐户的凭据下运行的 Windows 服务。该服务定期轮询窗口以获取活动控制台会话 ID,即交互式登录的 Windows 用户,然后通过 pinvoking wt…
使用“奇怪”的 PInvoke功能
我有一个用 C++ 编写的 .dll,其函数定义如下: EDK_API int EE_CognitivSetCurrentLevel ( unsigned int userId, EE_CognitivLevel_t level, EE_Cogn…
P/Invoke 获取指向字符数组的指针
我有一个 DLL,需要 P/Invoke 以下方法: 双字节 Foo( 整数a, 整数*b, 字符*c ); 根据文档,参数“c”是一个输出参数,必须是大小为 16 的字符数…
我应该如何从 C# 调用这个本机 dll 函数?
这是本机 (Delphi 7) 函数: function Foo(const PAnsiChar input) : PAnsiChar; stdcall; export; var s : string; begin s := SomeInternalMethod(i…