Интересует получения списка активных (занятых) файлов в системе Windows.h. Читал про недокументированную функцию , вот код
SYSTEM_HANDLE_INFORMATION* pInfo = NULL;
DWORD dwSize = 0;
NTSTATUS status = 0;
do
{
// keep reallocing until buffer is big enough
status = NtQuerySystemInformation(SystemHandleInformation, pInfo, dwSize, &dwSize);
if (status == STATUS_INFO_LENGTH_MISMATCH)
pInfo = (SYSTEM_HANDLE_INFORMATION*)realloc(pInfo, dwSize);
} while (status != 0);
for (DWORD i = 0; i < pInfo->dwCount; i++)
{
if (pInfo->handles[i].ProcessID == GetCurrentProcessId() && pInfo->handles[i].HandleType == 28)
{
TCHAR szPath[MAX_PATH];
GetFinalPathNameByHandle((HANDLE)pInfo->handles[i].HandleNumber, szPath, MAX_PATH, 0);
if (_tcsstr(szFilePath, L"filename_I_want_to_delete"))
{
CloseHandle((HANDLE)pInfo->handles[i].HandleNumber);
DeleteFile(szPath);
}
}
}
Но он не компилируется по причине неизвестных структур (типов).