ProcMon和CreateFile处理选项之间的对应关系

时间:2014-03-21 07:26:08

标签: windows winapi sysinternals

Process Monitor将CreateFile操作的处置选项显示为“Open”,“OpenIf”,“Overwrite”,“OverwriteIf”(可能是其他内容)。包含“If”的选项与不包含的选项有何不同?那些CreateFile WinAPI函数'dwCreationDisposition'标志对应哪个?

2 个答案:

答案 0 :(得分:10)

CreateFile()是winapi函数。然而,Process Monitor会对本机操作系统进行修补,它只会传递类似于winapi的内容。它与DMS Cutler在DEC工作时设计的操作系统VMS非常相似。 Process Monitor挂钩NtCreateFile(),按照链接查看记录的 CreateDisposition 参数值。复制:

  • FILE_SUPERSEDE。如果文件已存在,请将其替换为给定文件。如果没有,请创建给定文件。
  • FILE_CREATE。如果该文件已存在,请求失败,不要创建或打开给定文件。如果没有,请创建给定文件。
  • FILE_OPEN。如果该文件已存在,请将其打开,而不是创建新文件。如果没有,请求失败,不要创建新文件。
  • FILE_OPEN_IF。如果该文件已存在,请将其打开。如果没有,请创建给定文件。
  • FILE_OVERWRITE。如果该文件已存在,请将其打开并覆盖它。如果没有,请求失败。
  • FILE_OVERWRITE_IF。如果该文件已存在,请将其打开并覆盖它。如果没有,请创建给定文件。

答案 1 :(得分:3)

| CreateFile            | NtCreateFile          | Process Monitor |
| dwCreationDisposition | CreateDisposition     | Disposition     |
|-----------------------|-----------------------|-----------------|
| n/a                   | FILE_SUPERSEDE (0)    | Supersede (?)   |
| OPEN_EXISTING (3)     | FILE_OPEN (1)         | Open            |
| TRUNCATE_EXISTING (5) | FILE_OPEN (1)         | Open            |
| CREATE_NEW (1)        | FILE_CREATE (2)       | Create          |
| OPEN_ALWAYS (4)       | FILE_OPEN_IF (3)      | OpenIf          |
| n/a                   | FILE_OVERWRITE (4)    | Overwrite (?)   |
| CREATE_ALWAYS (2)     | FILE_OVERWRITE_IF (5) | OverwriteIf     |