нэйм, который принадлежит хендлу. в данном случаи нужно имя файла узнать. в данном случаи как я понял чтоб добраться до имени мне поможет лишь NtQuerySystemInformation. которая также как я понял вылетает без привилегий. хендл принадлежит моем же процессу.
У хендла нет имени. Имя у объекта есть, который описывает этот хендл. Нашел вот занятную функцию NtQueryObject:
ога и успешных вам зависонов на NamedPipes =) ZwQueryObject это своеобразный святой грааль, сколько граблей уже сломано об него.
Про named pipes с ним не в курсе) А для файлов он вроде работает. В сорсах он сводится к Код (Text): case ObjectNameInformation: // // Call a local worker routine // Status = ObQueryNameString( Object, (POBJECT_NAME_INFORMATION)ObjectInformation, ObjectInformationLength, &TempReturnLength ); break; Хотя ObQueryNameString конечно глючная...
вот так это можно обойти: Код (Text): ThreadProc Proc lp:DWORD invoke GetFileType, lp ret ThreadProc EndP NTObjectFile Proc uses ebx hHandle: DWORD lea eax, ThreadProc invoke CreateThread, 0, 0, eax, hHandle, 0, 0 xchg ebx, eax invoke WaitForSingleObject, ebx, 20 .IF eax == STATUS_TIMEOUT invoke ZwTerminateThread, ebx, 0 invoke ZwClose, ebx xor eax, eax ret .ENDIF invoke ZwClose, ebx xor eax, eax inc eax ret NTObjectFile EndP
На страничке http://twister.orgfree.com/sources/index.php можно слить файл handles_vb_practicum.rar - когда-то писал статью для VBStreets, это приложение к ней. В архиве есть пример реализующий все что нужно автору (включая обход зависона на NtQueryObject). Сам код на VB, а библиотека, получающая имя объекта по хэндлу - на МАСМе...