Привет всем
Я получаю GetLastError 5 (доступ запрещен) для функции CreateFileMapping. Кто-нибудь может мне помочь . мой код, как показано ниже
typedef NTSTATUS(WINAPI *NtSetInformationFileNext)(HANDLE FileHandle, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation,
ULONG Length, FILE_INFORMATION_CLASS FileInformationClass);
NtSetInformationFileNext Real_NtSetInformationFileData = NULL;
NtSetInformationFileNext Real_NtSetInformationFileVar ;
NTSTATUS WINAPI NtSetInformationFileCallback(HANDLE FileHandle, PIO_STATUS_BLOCK IoStatusBlock, PVOID FileInformation,
ULONG Length, FILE_INFORMATION_CLASS FileInformationClass)
{
if(FileInformationClass == 10)
{
FILE_RENAME_INFORMATION *pInfo = (PFILE_RENAME_INFORMATION)FileInformation;
GetFileNameFromHandle(FileHandle);
MessageBoxW(NULL, pInfo->FileName, L"Renamed To", MB_OK);
}
return Real_NtSetInformationFileData(FileHandle, IoStatusBlock, FileInformation, Length, FileInformationClass);
}
В приведенной выше функции обратного вызова NtSetInformationFile я вызываю функцию GetFileNameFromHandle(), передавая функцию FileHandle From NtSetInformationFile, поэтому внутри функции GetFileNameFromHandle я вызываю CreateFileMapping, используя тот же дескриптор.
пожалуйста, помогите мне, если что-то не так в приведенном выше коде.
CreateFileMapping
. Это похоже на какую-то функцию исправления, которая по своей сути не поддерживается. (В частности, вы вызываете ядро, которое перезаписывает внутреннее состояние.) - person Raymond Chen   schedule 08.08.2012