我需要替换所有的WinAPI调用

  • CreateFile,
  • ReadFile,
  • SetFilePointer,
  • CloseHandle

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

    这项任务的最佳实践是什么?

    最佳答案

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

  • 编写一组包装函数,例如MyCreateFile,MyReadFile等,它们最初只是调用相应的API并传递相同的参数,且未修改。
  • 使用文本编辑器搜索对原始API的所有调用,并将其替换为对新包装函数的调用。
  • 测试应用程序仍然可以正常运行。
  • 修改包装函数以适合您自己的目的。

  • 请注意,CreateFile是一个宏,它会根据是否定义UNICODE扩展为CreateFileW或CreateFileA。考虑使用LPCTSTR和TCHAR functions,以便可以将您的应用程序构建为ANSI或Unicode。

    请不要使用#define(如此处其他答复中所建议的那样),因为这只会导致维护问题,并且正如Maximilian正确指出的那样,这不是最佳实践。

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

    10-12 00:04
    查看更多