c++ - 如何用我自己的实现替换 MS VC++ 项目中的 WinAPI 函数调用(名称和参数集相同)?

标签 c++ winapi visual-c++

我需要替换的所有 WinAPI 调用

  • 创建文件,
  • 读取文件,
  • 设置文件指针,
  • 关闭句柄

我自己的实现(通过蓝牙使用低级文件读取)。 将替换功能的代码是视频文件播放器,它已经可以与常规硬盘文件一起使用。 还需要,如果 VideoPlayer 输入中的文件是普通硬盘文件,Video Player 仍然可以播放 HDD 中的文件。

此类任务的最佳实践是什么?

最佳答案

我建议您按照以下步骤操作:

  1. 编写一组包装函数,例如 MyCreateFile、MyReadFile 等,它们最初只是调用相应的 API 并传递相同的参数,不加修改。
  2. 使用文本编辑器搜索对原始 API 的所有调用,并将它们替换为对新包装函数的调用。
  3. 测试应用程序是否仍然正常运行。
  4. 修改包装函数以满足您自己的目的。

请注意,CreateFile 是一个扩展为 CreateFileW 或 CreateFileA 的宏,具体取决于是否定义了 UNICODE。考虑使用 LPCTSTR 和 TCHAR functions这样您的应用程序就可以构建为 ANSI 或 Unicode。

请不要使用 #define,正如此处其他回复所建议的那样,因为这只会导致维护问题,而且正如 Maximilian 正确指出的那样,这不是最佳做法。

关于c++ - 如何用我自己的实现替换 MS VC++ 项目中的 WinAPI 函数调用(名称和参数集相同)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60641/

相关文章:

c++ - Brainfuck 解释器奇怪的输出

java - 在 SWIG 接口(interface)上找不到 C++ 类

c++ - 给定日期,获取星期几 - SYSTEMTIME

java - 索引文档的最大大小/数量是多少 - 32 位操作系统上的 java lucene 3.0.2

visual-c++ - 有没有办法检测 #pragma unmanaged 在 C++/CLI 中是否有效?

c++ - 如何遍历二维数组?

c++ - c++中关于const成员函数的问题

c# - 为特定的 GDI 设备上下文禁用抗锯齿

c++ - Windows 错误报告和超出范围的异常

c++ - Visual C++,使用相同迭代器名称的多个 for 循环,在 Debug模式下在范围外可见