HOOK CreateFile/WriteFile/ReadFile及相应NT函数,实现对文件写等操作的控制,常常需要根据句柄求路径。第一个是网上找的文件映射方式,下面给出两个方式——
BOOL GetFileNameFromHandle(HANDLE hFile,TCHAR pszFileName[MAX_PATH])
{
HANDLE hFileMap=NULL;
PVOID pMem=NULL;
BOOL bRet = TRUE;
//获取文件大小
DWORD dwFileSizeHigh = 0;
DWORD dwFileSizeLow = GetFileSize(hFile, &dwFileSizeHigh);
//创建Mapping对象
hFileMap = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE,
0,
1,
NULL);
if (!hFileMap)
{
return FALSE;
}
pMem = MapViewOfFile(hFileMap, FILE_MAP_READ, 0, 0, 1);
if (!pMem)
{
return FALSE;
}
//从Mapping对象获得文件名
if (0 == GetMappedFileName(GetCurrentProcess(),
pMem,
pszFileName,
MAX_PATH))
{
return FALSE;
}
TCHAR szTemp[MAX_PATH] = {0};
//获取电脑上的所有驱动器,如"C:\