Código:
NTSTATUS HookedDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
NTSTATUS ntStatus;
PIO_STACK_LOCATION IoStack=IoGetCurrentIrpStackLocation(Irp);
PFILE_OBJECT FileObject;
POBJECT_NAME_INFORMATION wcFilePath;
ANSI_STRING aStr;
if (PsReferenceProcessFilePointer(PsGetCurrentProcess(),&FileObject)==STATUS_SUCCESS)
{
__try{
if (IoQueryFileDosDeviceName(FileObject,&wcFilePath)==STATUS_SUCCESS)
{
DbgPrint("Ruta archivo: %ws .\n",wcFilePath->Name.Buffer);
}
else
{
DbgPrint("Ruta archivo: %ws .\n",FileObject->FileName.Buffer);
}
}__except(EXCEPTION_EXECUTE_HANDLER){
ntStatus = GetExceptionCode();
DbgPrint("Exception: %d.\n", ntStatus);
}
}
Este es el codigo, controlar las excepciones no me sirve de nada porque me da pantallazo azul igual
Con el %wZ sige mostrando la barra y transformando la cadena con RtlUnicodeStringToAnsiString me devuelve un punto en vez de una barra.
Lo raro aparte del cuelgue de IoQueryFileDosDeviceName es que no me imprima 'Ruta archivo:' solo una barra.