Вообщем NtWriteFile возвращает еррор ntstatus = 0x00000103 STATUS_PENDING (The operation that was requested is pending completion.) вызов делаю с юзер моде ???
Примерно так Код (Text): HANDLE hFile; UNICODE_STRING UnStrFileName; IO_STATUS_BLOCK IoStatusBlock; RtlInitUnicodeString(&UnStrFileName,L"\\??\\C:\\Temp\\my.dll"); OBJECT_ATTRIBUTES ObjectAttributes; InitializeObjectAttributes(&ObjectAttributes,&UnStrFileName,0,NULL,NULL); NTSTATUS NtStatus = NtCreateFile(&hFile,FILE_GENERIC_WRITE,&ObjectAttributes,&IoStatusBlock,NULL,0,FILE_SHARE_WRITE,FILE_CREATE,0,NULL,0); if(NT_SUCCESS(NtStatus)) { DWORD dwKey; LARGE_INTEGER FileOffset; NtStatus = NtWriteFile(hFile,NULL,NULL,NULL,&IoStatusBlock,lpBuffer,dwBufferLen,&FileOffset,&dwKey); if(NT_SUCCESS(NtStatus)) { bRet = TRUE; } NtClose(hFile); }
Незаметил вообще то пишет в файл просто смотрел в ошибку а записывает после закрытия хендла )) NtWriteFile возвращеет в STATUS_PENDING в реализации винды если NtStatus == STATUS_PENDING то NtWaitForSingleObject(hFile,FALSE,NULL);