Windows:如何拦截Win32磁盘I / O API

哈里

在Windows中,所有的磁盘I / O,最终通过Win32 API调用像发生CreateFileSetFilePointer等等。

现在,是否可以拦截这些磁盘I / O Win32调用并在运行时为所有动态链接的Windows应用程序挂钩自己的代码?也就是说,CreateFile通过Windows DLL而不是静态C库获得其功能的应用程序

我有一些约束

  1. 没有源代码:我没有要拦截的进程的源代码。

  2. 线程安全:我的挂钩代码可以动态分配自己的内存。此外,由于该内存将与多个截获的进程(及其线程)共享,因此我希望能够序列化对其的访问。

  3. 有条件的委派和重写:在我的挂钩代码中,我希望能够决定是委派给原始的Win32 API功能,还是使用我自己的功能,或两者。(非常类似于C ++或Java中子类的重写方法中对超类方法的可选调用。)

  4. 常规的用户空间代码:我希望能够在无需编写任何设备驱动程序的情况下完成上述任务,这主要是由于编写一个驱动程序很复杂。

如果可能的话,我将感谢一些提示。源代码不是必需的,但始终受到欢迎!

轻巧

如果Detours不是您想要的,您可能想研究一下mhook

使用钩子时可能会遇到以下两个问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何禁用按钮-Win32 API

来自分类Dev

Visual C++ Win32 api代码拦截某个击键

来自分类Dev

Win32上的异步串行I / O-如何创建警报事件

来自分类Dev

如何为Win32 API声明变量?

来自分类Dev

如何清除Win32 API中的屏幕

来自分类Dev

GetGuiResources WIn32 API使用

来自分类Dev

Win32 API SearchPath失败

来自分类Dev

GetGuiResources WIn32 API使用

来自分类Dev

Java到Win32加密API

来自分类Dev

Win32 API 无法 CreateWindowW()

来自分类Dev

如何将Turbo Pascal Win32的I / O端口访问转换为C#.Net

来自分类Dev

如何将Turbo Pascal Win32的I / O端口访问转换为C#.Net

来自分类Dev

如何监视Windows XP磁盘I / O?

来自分类Dev

使用Win32 / C ++ API更改Windows 7墙纸(未实现操作异常)

来自分类Dev

使用Win32 API使用Windows属性存储(元数据)创建文件

来自分类Dev

Win32 API,获取适用于游戏的子级Windows

来自分类Dev

Win32 API:如何读取序列,如果不是数据,如何在超时内退出

来自分类Dev

如何在PowerShell环境中使用Win32 API FindWindow()在Windows 8.1 Update 2 OS中查找桌面窗口(按窗口名称)?

来自分类Dev

WIN32 API中WM_MOUSEHOVER上的POPUP窗口-如何关闭它?

来自分类Dev

如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

来自分类Dev

Win32 API:如何在Edit控件中捕获转义键?

来自分类Dev

如何仅通过Win32 API实现.NET Process.Exited事件

来自分类Dev

如何从MFC应用程序调用函数的Win32 API版本?

来自分类Dev

如何确定两个Win32 API句柄代表同一对象?

来自分类Dev

Win32 API:如何在编辑控件中更改部分文本的颜色

来自分类Dev

Golang:如何在没有cgo的情况下调用win32 API?

来自分类Dev

如何使用WIN32 API for C ++更改文本的颜色和大小?

来自分类Dev

如何在Win32中正确调用HeapSummary API?

来自分类Dev

C ++如何使用Win32 API通过线程从文本框中获取文本

Related 相关文章

  1. 1

    如何禁用按钮-Win32 API

  2. 2

    Visual C++ Win32 api代码拦截某个击键

  3. 3

    Win32上的异步串行I / O-如何创建警报事件

  4. 4

    如何为Win32 API声明变量?

  5. 5

    如何清除Win32 API中的屏幕

  6. 6

    GetGuiResources WIn32 API使用

  7. 7

    Win32 API SearchPath失败

  8. 8

    GetGuiResources WIn32 API使用

  9. 9

    Java到Win32加密API

  10. 10

    Win32 API 无法 CreateWindowW()

  11. 11

    如何将Turbo Pascal Win32的I / O端口访问转换为C#.Net

  12. 12

    如何将Turbo Pascal Win32的I / O端口访问转换为C#.Net

  13. 13

    如何监视Windows XP磁盘I / O?

  14. 14

    使用Win32 / C ++ API更改Windows 7墙纸(未实现操作异常)

  15. 15

    使用Win32 API使用Windows属性存储(元数据)创建文件

  16. 16

    Win32 API,获取适用于游戏的子级Windows

  17. 17

    Win32 API:如何读取序列,如果不是数据,如何在超时内退出

  18. 18

    如何在PowerShell环境中使用Win32 API FindWindow()在Windows 8.1 Update 2 OS中查找桌面窗口(按窗口名称)?

  19. 19

    WIN32 API中WM_MOUSEHOVER上的POPUP窗口-如何关闭它?

  20. 20

    如何使用Win32 API获取任何线程的堆栈大小和堆栈限制

  21. 21

    Win32 API:如何在Edit控件中捕获转义键?

  22. 22

    如何仅通过Win32 API实现.NET Process.Exited事件

  23. 23

    如何从MFC应用程序调用函数的Win32 API版本?

  24. 24

    如何确定两个Win32 API句柄代表同一对象?

  25. 25

    Win32 API:如何在编辑控件中更改部分文本的颜色

  26. 26

    Golang:如何在没有cgo的情况下调用win32 API?

  27. 27

    如何使用WIN32 API for C ++更改文本的颜色和大小?

  28. 28

    如何在Win32中正确调用HeapSummary API?

  29. 29

    C ++如何使用Win32 API通过线程从文本框中获取文本

热门标签

归档