使用钩子拦截ReadFile的有关问题。

使用钩子拦截ReadFile的问题。。。
我的设想是这样的:拿记事本程序来说,现在有一个加密了的txt文件,当我们双击该txt文件的时候,系统创建notepad.exe,这时候给该进程下钩子,在它调用了某个读文件内容的API之后,读出文件内容之前我给它拦截住,把文件内容解密,再输出。
这个API我已开始觉得应该是ReadFile(),后来调试的时候发现不是,请问我该钩取的是哪个API?

------解决方案--------------------
貌似记事本没用ReadFile,而是内存映射。 
将文件映射到某片内存空间,然后直接访问对应内存地址就等于访问文件对应内容。
第一次访问的时候会产生缺页中断,然后系统自动载入文件内容。
真要加密文件,最好用驱动吧。
------解决方案--------------------
里面的記錄事本可以Hook CreateFileW, 另存/保存也是這個函數, 只是方式不一樣, 打開是 讀, 另存/保存是寫.
------解决方案--------------------
text:0100263A xor edi, edi
.text:0100263C push edi ; hTemplateFile
.text:0100263D push 80h ; dwFlagsAndAttributes
.text:01002642 push 3 ; dwCreationDisposition
.text:01002644 push edi ; lpSecurityAttributes
.text:01002645 push 1 ; dwShareMode
.text:01002647 push 80000000h ; dwDesiredAccess
.text:0100264C lea eax, [ebp+String1]
.text:01002652 push eax ; lpFileName
.text:01002653 call ds:__imp__CreateFileW@28 ; CreateFileW(x,x,x,x,x,x,x)
.text:01002659 cmp eax, 0FFFFFFFFh
.text:0100265C mov [ebp+hObject], eax
.text:01002662 jz loc_10026F9
.text:01002668 push edi ; lpOverlapped
.text:01002669 lea ecx, [ebp+iSize]
.text:0100266F push ecx ; lpNumberOfBytesRead
.text:01002670 push 400h ; nNumberOfBytesToRead
.text:01002675 lea ecx, [ebp+Buffer]
.text:0100267B push ecx ; lpBuffer
.text:0100267C push eax ; hFile
.text:0100267D call ds:__imp__ReadFile@20 ; ReadFile(x,x,x,x,x)
.text:01002683 test eax, eax
.text:01002685 jle short loc_10026ED
.text:01002687 cmp [ebp+iSize], edi
.text:0100268D jz short loc_10026ED
.text:0100268F push [ebp+iSize] ; iSize
.text:01002695 lea eax, [ebp+Buffer]
.text:0100269B push eax ; lpv

给你反汇编了一下xp下的notepad,开打文件时的操作如上。看!调用了CreateFileW和ReadFile,楼主是不是Hook不对啊?