status = NtCreateFile(
&hAFD,
GENERIC_READ | GENERIC_WRITE,
&objectAttr,
&statusBlock,
nullptr,
0x80,
FILE_SHARE_READ | FILE_SHARE_WRITE,
FILE_OPEN_IF,
FILE_NON_DIRECTORY_FILE | FILE_FLAG_OPEN_REQUIRING_OPLOCK,
nullptr,
0);
printf("NtCreateFile vm %ls %p %p\r\n", objectName.Buffer, status, GetLastError());
if (SUCCEEDED(status))
{
OVERLAPPED ov = { 0 };
ov.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
bool ret = LockFileEx(hAFD, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov);
status = GetLastError();
printf("LockFileEx vm %ls %p %p\r\n", objectName.Buffer, status, ret);
if (status == ERROR_IO_PENDING)
{
system("pause");
bool ackewaite = WaitForSingleObject(ov.hEvent, INFINITE);
printf("WaitForSingleObject %p %p\r\n", ackewaite, GetLastError());
status = UnlockFile(hAFD, 0, 0, 1, 0);
printf("UnlockFile vm %ls %p %p\r\n", objectName.Buffer, status, GetLastError());
}
system("pause");
status = NtClose(hAFD);
printf("NtClose %ls %p\r\n", objectName.Buffer, status);
}
return 0;
NtCreateFile加锁lock
最新推荐文章于 2025-07-26 12:01:21 发布