vkr*_*rzv 9 windows winapi sysinternals
Process Monitor将CreateFile操作的处置选项显示为"Open","OpenIf","Overwrite","OverwriteIf"(可能是其他内容).包含"If"的选项与不包含的选项有何不同?它们对应哪个CreateFile WinAPI函数'dwCreationDisposition'标志?
Han*_*ant 10
CreateFile()是winapi函数.然而,Process Monitor会对本机操作系统进行修补,它只会传递类似于winapi的内容.它与DMS Cutler在DEC工作时设计的操作系统VMS非常相似.Process Monitor挂钩NtCreateFile(),按照链接查看记录的CreateDisposition参数值.复制:
| 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 |
Run Code Online (Sandbox Code Playgroud)