C# 和 void 指针

2023-11-25

我正在编写我的第一个 C# 应用程序,但幸运的是我必须使用 void 指针(使用返回句柄的 DLL)。从我读到的内容来看,有以下几种选择:

  1. 不安全代码,例如参见http://www.c-sharpcorner.com/UploadFile/gregory_popek/WritingUnsafeCode11102005040251AM/WritingUnsafeCode.aspx

  2. 在我的 C# 程序中,我的函数 declarations IntPtr 而不是 void* 中写入。例如。: 公共静态 extern char SupportsWhatever(IntPtr h);

  3. 使用 ref,例如: 公共静态 extern char SupportsWhatever(ref h);

还应该注意的是,我需要在 DLL 和 C# 应用程序之间来回整理信息。

unsafe 选项是 Google 上第一个出现的选项,但出于某种原因,在我的所有函数之前编写关键字 unsafe 感觉不太对。

有什么建议吗?


通常,对于编组情况,使用 IntPtr 将是此处的首选方法。它在安全代码中是允许的,并且非常清楚地表明您的意图是来回整理指针。

这就是 BCL 代表句柄的部分。例如,您可以构造一个来自 IntPtr 的光标代表本机句柄。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 和 void 指针 的相关文章

  • VS2015 代码覆盖率不适用于 ASP.NET Core 1.0(以前称为 ASP.NET 5)中的测试

    我有一个 ASP NET Core 1 0 以前称为 ASP NET 5 解决方案 其中包含几个类库 包 和一个 ASP NET MVC6 项目 我有一个使用支持 Core 1 0 的新 XUnit 2 0 的测试库 然而 由于某种原因 当
  • 如何获取网络服务的状态

    如何使用 C 获取 Web 服务的状态 无论是成功完成 失败还是待处理 private void button1 Click object sender EventArgs e var url servicsURL try var myRe
  • 动态库使用静态库,出现未定义的符号

    我一直在寻找解决问题的方法 只是得到了一些线索 但我找不到任何一致的解决方案 我有一个动态库 libdyna so 的代码 它使用3个静态库 libone a libtwo a lib Three a 和log4cpp库的功能 当我第一次构
  • ExecuteNonQueryAsync 并在 SQL 事务中提交

    我正在寻求对我创建的一段代码的帮助 我正在尝试在事务中从 C 进行异步 SQL 调用 例如我可能正在更新或删除表中的行 这是我到目前为止所拥有的 但我似乎无法找到有关在事务中执行此操作的太多信息 根据我在这里所拥有的以及到目前为止我所理解的
  • C++ 构造函数根据参数类型调用另一个构造函数

    我有这门课 class XXX public XXX struct yyy XXX std string private struct xxx data 第一个构造函数 使用结构 很容易实现 第二 我可以将一个字符串以特定的格式分开 解析
  • 带有成员 (operator[]) 函数的 invoke_result

    如何为成员函数正确调用invoke result 或者专门用于运算符成员函数 我试过std invoke result
  • 改装和授权标头

    目前 我正在向我的请求添加授权标头 如下所示 文件 SomeFile cs public interface ITestApi Get api test id Task
  • 安装/编译 pylzma(lzma python 绑定)

    我已经向作者提出了这个问题website http www joachim bauch de projects pylzma comment page 1 comment 5211 但我想我也可以在这里问 我一直在尝试使用以下设置安装 py
  • 减少最大值并保存其索引

    int v 10 2 9 1 3 5 7 1 2 0 0 int maximo 0 int b 0 int i pragma omp parallel for shared v private i reduction max maximo
  • C++ 访问嵌套类的私有成员

    标题可能有点误导 我有以下问题 我有一棵由叶子和内部节点组成的树 用户应该能够在叶子中存储任何信息and该树有一些方法可以获取一组用户定义的值 并且需要在恒定时间内 未摊销 访问相应的叶子 我提出了以下想法 但它不起作用 因为不幸的是我无法
  • 对指针列表进行排序

    我再次发现自己在 C 中的一些非常简单的任务上失败了 有时我希望我能从 Java 中的 OO 中学到所有知识 因为我的问题通常是从像 Java 一样思考开始的 无论如何 我有一个std list
  • “双免”是什么意思?

    正如标题所暗示的那样 我是 C 语言的新手 并且很快就会有期中考试 我目前正在修改过去的论文 一个反复出现的主题是双重自由问题 我理解就是调用的过程free 在同一个内存位置两次 但我有几个问题我不能 100 确定如何回答 问题1 C中双重
  • 使用 MemoryCache 而不是普通的旧 Dictionary 的令人信服的理由是什么

    我刚刚遇到内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx这是 NET 4 中的新增功能 我知道如果你想的话它会很有用 限制
  • WiX 安装程序在 vs 2012 上不起作用

    我想为我的应用程序创建一个安装程序 我已经下载了 WiX 3 6 并将其安装在 vs 2012 上 创建简单的winform应用程序 将 WiX 安装项目添加到我的解决方案中 右键单击参考并将我的 winform 应用程序添加到安装程序的参
  • 设置了 OFN_ALLOWMULTISELECT 标志的 GetOpenFileName()

    我正在尝试使用 GetOpenFileName 通用对话框调用来弹出打开对话框并允许用户选择多个文件 我设置了 OFN ALLOWMULTISELECT 标志 并设置了 OFN EXPLORER 因此我得到了 新样式 文件选择框 当我设置
  • 访问控制器类中的 appsettings.json 值

    无法弄清楚如何读取startup cs之外的appsettings json值 例如 我想做的是在 Layout cshtml 中 从配置中添加站点名称 例如 ViewData SiteName Configuration GetValue
  • 成员函数的Decltype

    class A int f int x int j return 2 decltype f p 给我错误 error decltype cannot resolve address of overloaded function 我不明白为什
  • 如何在mvc视图中的表中显示数据库数据

    在我的 MVC 应用程序中 我从数据库检索数据 我想在表格中显示退役数据 控制器代码 public ActionResult MyAccount var user User Identity Name string sThumbnails
  • Cmake:在自定义目录中查找 protobuf 包

    我有 cmake 3 10 x 并下载了当前的 protobuf 源 3 6 1 使用 cmake 我创建了 bin 目录 PROTOBUF SOURCE DIR bin 在其中成功构建了该库 下一步我想在我的基于 cmake 的项目中使用
  • 从 C# 调用 C++ DLL

    我想使用 C 中的 C DLL C DLL 是win32 控制台应用程序 我已成功调用它 并希望在 C 中处理来自 C 的数据 然而 C 应用程序在执行 DLL 后退出 即这一行 GetArrayFromDLL 我是 C 和 Visual

随机推荐

  • 清单嵌入和外部 - 哪个优先?一个可以凌驾于另一个之上吗?

    当可执行文件具有嵌入的清单和相应的清单时 manifest文件 哪个清单具有优先权 只加载了一个吗 一个可以凌驾于另一个之上吗 我只是用谷歌搜索一下CSI视窗 外部清单 优先级 1 最低 内部清单 优先级 2 覆盖外部清单
  • Pandas 时间序列假日规则偏移

    尝试使用 pandas tseries holidays 类定义一组规则 但无法弄清楚如何基于另一个规则创建规则 我有以下规则 但随后想创建另一条规则 将原始规则抵消一个工作日 感恩 Holiday Thanksgiving Day mon
  • 如何用 2 个或更多类实现相同的方法?

    我想写一个TCheckBox and TRadioButton后代有3个相同的方法 TMyCheckBox class TCheckBox procedure DoSomething1 procedure DoSomething2 proc
  • 用于 PHP 的 Google 日历 API 获取日历事件的简单只读请求

    我想为网站编写一些简单的 PHP 代码 以使用 Google 日历 API V3 对公共 Google 日历事件列表进行只读访问 我只需要在网页上显示日历中即将发生的事件的列表 我已经阅读了开发人员文档并查看了入门部分和获取事件示例代码但我
  • TinyMCE 与 AJAX(更新面板)永远没有价值

    我想对更新面板内的文本区域使用富文本编辑器 我找到了这个帖子 http www queness com post 212 10 jquery and non jquery javascript rich text editors通过这个问题
  • 有没有办法在按下弹出框外部时不让弹出框消失?

    我知道 SDK 文档说 点击弹出窗口内容之外的地方会自动关闭弹出窗口 但我确信这里的聪明人找到了方法 也许我应该覆盖弹出窗口关闭功能 Thanks 编辑 我尝试按照此处的建议使用 passthroughViews 并且效果完美 下面是任何需
  • 文本溢出:省略号不起作用

    这就是我尝试过的 参见here body overflow hidden span border solid 2px blue white space nowrap text overflow ellipsis 本质上 当窗口变小时 我希望
  • Bluebird promisify 和回调,没有错误参数

    我试图承诺一个不使用的第三方库callback err data 图案 相反 他们总是回来callback data and throw关于错误 Promise promisifyAll horse var p Promise defer
  • 如何使用工作空间路径名在 MacOS 上从命令行启动 eclipse

    在Linux上 eclipse PathnameToWorkspace 工作正常 并在工作区上启动 eclipse 鉴于 MacOS 应用程序树结构 我一直无法弄清楚 MacOS 的道德等价物 我怀疑这不是一个难题 eclipse data
  • 在 Electron 中使用 ipc 从渲染器设置全局变量

    渲染器 js ipcRenderer sendSync setGlobal globalVarName varInner varInner2 result main js global globalVarName varInner varI
  • 使用 @Async 嵌套 @Transactional 方法

    我将 Spring 与 JPA 结合使用 我有 EnableAsync and EnableTransactionManagement打开 在我的用户注册服务方法中 我调用了一些带注释的其他服务方法 Async 这些方法可以执行各种操作 例
  • Scala 返回一个带有 0 个参数的 void 函数,语法丑陋?

    给定一个定义如下的方法 def descendEach times Int f gt Unit for i lt 1 to times other code f 当我使用这种方法时 我希望能够写 gd descendEach 20 prin
  • 从其他 T4 模板运行 T4 模板

    有谁知道是否可以在 VS2010 内从另一个 T4 模板运行 T4 模板文件 Thank 是的你可以 这就是我正在做的 string templateText File ReadAllText Host ResolvePath templa
  • 访问资产目录中具有特定分辨率的图像

    我有一个名为 SmileyFace 的图像集 其中包含 1x 2x 和 3x 图像尺寸 我想将图像集中的特定尺寸复制到粘贴板 如何在下面的代码中以编程方式引用 1x 2x 或 3x let image UIImage named Smile
  • 当我使用 selenium 时 Firefox 想要更新?

    我的计算机上的 Firefox 是最新的 但当我使用 selenium 时 有时它会说我需要或应该更新 从而搞乱我的程序 最终这个窗口会阻止我的程序工作 有什么办法可以阻止这个吗 谢谢 如果这是在您有权访问 Firefox 的计算机上 则有
  • dynamic_cast<> 有多快

    大约与典型的相比std string operator 我在下面提供了更多详细信息 我不确定它们是否有任何相关性 具有复杂性或近似值的答案就足够了 谢谢 Details 我将在列表的 for 循环中使用它来查找一些特定的实例 我估计我的平均
  • 如何使用 ASP.NET Core 解决 REACT 中的 CORS 错误

    我有一个 ASP NET Core Web API 和一个单独的 React 应用程序 Web API 使用 Windows 身份验证 当部署到服务器时 我没有任何问题 但是当我尝试在本地运行应用程序时 我会收到 CORS 错误 并且仅在
  • 我的 MySQL 服务器是哪个版本?

    确定 MySQL 服务器软件的确切版本号的查询语法是什么 您可以使用SHOW VARIABLES SHOW VARIABLES WHERE Variable name version
  • Bash 分号等于换行符不完全正确吗?

    我在多篇文章中读到分号 在类 UNIX shell 中等于换行 然而 以下内容让我感到困惑 我也没有运气用谷歌搜索它 我猜这是一个问题do在 shell 中 但 bash 分号 do 并不是最适合 google 的搜索词组合 下面是一个简单
  • C# 和 void 指针

    我正在编写我的第一个 C 应用程序 但幸运的是我必须使用 void 指针 使用返回句柄的 DLL 从我读到的内容来看 有以下几种选择 不安全代码 例如参见http www c sharpcorner com UploadFile grego