Process Monitor shows disposition option for CreateFile operation as "Open", "OpenIf", "Overwrite", "OverwriteIf" (may be something else). How does the options which contain "If" differ from those that do not? And to which CreateFile WinAPI function 'dwCreationDisposition' flags do they correspond?
问问题
4922 次
2 回答
11
CreateFile() 是 winapi 函数。Process Monitor 但是修补了本机操作系统,它只是类似于 winapi。它与 Dave Cutler 在 DEC 工作时设计的操作系统 VMS 非常相似。Process Monitor hooks NtCreateFile,点击链接查看文档化的CreateDisposition参数值。复制:
FILE_SUPERSEDE
. 如果该文件已存在,请将其替换为给定的文件。如果没有,请创建给定的文件。FILE_CREATE
. 如果文件已经存在,则请求失败并且不要创建或打开给定的文件。如果没有,请创建给定的文件。FILE_OPEN
. 如果文件已存在,请打开它而不是创建新文件。如果没有,则使请求失败并且不创建新文件。FILE_OPEN_IF
. 如果文件已经存在,请打开它。如果没有,请创建给定的文件。FILE_OVERWRITE
. 如果文件已经存在,打开它并覆盖它。如果没有,则请求失败。FILE_OVERWRITE_IF
. 如果文件已经存在,打开它并覆盖它。如果没有,请创建给定的文件。
于 2014-03-21T08:19:15.160 回答
5
| 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 |
于 2016-11-23T19:12:55.490 回答