Autor
|
Tema: Introducción a la programación de drivers en Windows (Leído 81,525 veces)
|
bizco
Desconectado
Mensajes: 698
|
pon todo el codigo. Pointer to a wide-character string. Note that the strings returned by the various LSA functions might not be null terminated. puede que sea eso lo que te crea problema, prueba con %wZ con el UNICODE_STRING.
|
|
« Última modificación: 10 Septiembre 2010, 18:46 pm por ctlon »
|
En línea
|
|
|
|
Hendrix
|
Para evitar pantallazos, intenta esto: __try{ //Aqui tu codigo }__except(EXCEPTION_EXECUTE_HANDLER){ NtStatus = GetExceptionCode(); DbgPrint("Exception: %d.\n", NtStatus); }
De todos modos: - RtlUnicodeStringToAnsiStringEjemplo: ANSI_STRING aStr; RtlUnicodeStringToAnsiString(&aStr,CadenaUnicode,TRUE);
Un Saludo
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
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.
|
|
|
En línea
|
|
|
|
Distorsion
Desconectado
Mensajes: 238
15Hz ~ 20Hz
|
Estoy liado con la comunicación entre modo kernel y user Tal como esta en el ejemplo puedes dar una orden desde modo user y al acabar la operación en el kernel devolver un resultado ya que segun creo la funcion: DeviceIoControl(hDevice,(DWORD)Escribe,iBuffer,(DWORD)sizeof(iBuffer),(LPVOID)oBuffer,(DWORD)sizeof(oBuffer),&a,NULL)==true) es bloqueante y espera a que desde el kernel se envié una repuesta. Pero yo soy un caprichoso y me gustaría al revés, que el kernel enviara un int y se quedara esperando la respuesta del modo usuario, otro int. Pero claro creo que con el DeviceIoControl no es posible. A alguien se le ocurre algo?¿
|
|
|
En línea
|
|
|
|
bizco
Desconectado
Mensajes: 698
|
Create un evento y con readfile lees los datos desde modo usuario.
|
|
|
En línea
|
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
wachi
Desconectado
Mensajes: 57
|
hola a todos ,desde hace un tiempo para aca me estoy introduciendo a la programacion de drivers,ya me he leido el tute de Hendrix ,el cual esta muy bueno,peor quiero hacerles una pregunta ,existe algun IDE para programar los driver que tenga ayuda inteligente (es decir que cuando yo de Ctrl + Space) me salgan las funciones de las diferentes librerias ?????
gracias de antemano......
|
|
|
En línea
|
Si lo que vas a decir no es mas bello que el silencio : no lo digas
|
|
|
|
|