per chi fosse interessato ... per convertire l'handle nel nome del file ...

NtQueryInformationFile

è l'API nativa (conviene comunque usare il wrapper ZwQueryInformationFile anche se teoricamente dovrebbe essere perfettamente uguale)

La dichiarazione è di questo tipo
HANDLE, PVOID, PVOID, DWORD, DWORD

di cui il secondo ed il terzo sono in USCITA mentre tutti gli altri sono in ingresso

- Il primo parametro è l'handle del file
- il secondo non so cosa sia, ma da quanto ho capito non serve se deve semplicemente essere letto solo il nome, la struttura e grande 6 BYTE, tanto che nel codice viene dichiarato come un'array di 3 DWORD
- il terzo è il nome del file nella forma \Device\HarddiskX\path\to\file
- il 4° è la dimensione del buffer
- il 5° è il tipo di richiesta da eseguire, e per leggere semplicemente il nome del file basta passargli 9, ovvero, se avete il DDK, FileNameInformation dell'enum _FILE_INFORMATION_CLASS

Il 3° parametro il codice lo passa come un'array di unsigned char di 1001 elementi, personalmente lo trovo sovra dimensionato dato che oltre 255 caratteri le path non possono essere e considerato che ci sta il nome del device all'inizio anche 300 potrebe andare bene, comunque per salvare capre e cavoli 500 elementi sono + che sufficenti

per completare l'informazione ... questa e le altre api stanno dentro ntdll.dll