我在下面的程序中使用了MicrosoftVisualC++的DUMPBIN实用程序。我确信,对remove的调用最终从kernel32.dll调用了DeleteFileW的Microsoft调用(我用另一个工具确认了这个调用)。那么,当我在下面的程序的DUMPBIN /imports上应用.EXE时,为什么没有看到DeleteFileW系统调用呢?
如何看待DeleteFileW使用DUMPBIN的系统调用?
谢谢,吉拉德
#include "stdafx.h"
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main()
{
const char* fileName = "gilad.txt";
this_thread::sleep_for(chrono::milliseconds(10*1000));
if (remove(fileName) != 0)
cout << "Remove operation failed" << endl;
else
cout << *fileName << " has been removed." << endl;
return 0;
}发布于 2018-02-03 17:55:12
您的代码不调用DeleteFileW,而是调用remove。大概来自msvcrt.dll。是的,在此之后,msvcrt.dll会为您调用DeleteFileW,但是该部分不会出现在您的可执行文件中。
( dumpbin工作在单个文件上,它不跟踪其他文件的依赖关系)
如何在DUMPBIN输出中看到"DeleteFileW“的系统调用?
您必须在实际引用dumpbin的文件上运行DeleteFileW。这不是上面的代码,而是您可以使用WinAPI创建的另一个代码,或者仅仅作为一个实验,在msvcrt.dll上运行它。
https://stackoverflow.com/questions/48600150
复制相似问题