Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eternal Idol

#2871
De nadas, suerte con eso y para todo este tipo de cosas DEPURAR es lo mejor que hay por lejos.
#2872
Programación C/C++ / Re: Ayuda con driver
29 Julio 2010, 23:51 PM
Tendre que bajar la ultima version entonces ...

\winddk\6000\inc\ddk\ntifs.h(85) : error C2371: 'PEPROCESS' : redefinition; different basic types
\winddk\6000\inc\ddk\ntifs.h(86) : error C2371: 'PETHREAD' : redefinition; different basic types

driver.c(18) : error C2037: left of 'ActiveProcessLinks' specifies undefined struct/union '_KPROCESS'
#2873
Programación C/C++ / Re: Ayuda con driver
29 Julio 2010, 23:38 PM
¿Editaste los archivos del WDK para poder generar el binario? Podrias decir que version usas y pegar el contenido del archivo SOURCES para ver como lo generas.

PD. No estan redeclaradas por lo contrario actualmente, originalmente iban separadas, incluso existia el DDK (ntddk.h) y el IFS (ntifs.h).
#2874
Programación C/C++ / Re: Ayuda con driver
29 Julio 2010, 22:43 PM
Son del WDK (antiguo DDK) e historicamente no se usan las dos al mismo tiempo, se usa una o la otra. Desde la version de Vista del WDK se puede incluir ntifs.h y despues ntddk.h (lo que es redundante) pero haciendo lo contrario hay errores de doble definicion ...

Cita de: WDKOrganization of Wdm.h, Ntddk.h, and Ntifs.h
Before the Windows Vista version of the WDK, the main header files that are used driver development—Wdm.h, Ntddk.h, and Ntifs.h—contained many duplicate declarations.

Beginning with the Windows Vista version of the WDK, Wdm.h, Ntddk.h, and Ntifs.h are organized hierarchically and do not contain duplicate information. The higher-level files include the lower-level files. Each function and structure declaration appears only once.

Ntifs.h includes Ntddk.h, and Ntddk.h includes Wdm.h.

Cita de: WDKFiles that are higher in the hierarchy include files that are lower in the hierarchy. Specifically, Ntifs.h includes Ntddk.h, which includes Wdm.h. This hierarchy eliminates the duplication of contents that occurred when the files were not hierarchical.

Igual poniendo el orden correcto tampoco compila el codigo ... tal vez con un WDK mas moderno que el codigo que si defina los campos de EPROCESS ...
#2875
¿Y estas seguro de que el hFile es siempre el mismo?

Edito:
El contador asi como lo pusiste estaria mal, lpNumberOfBytesRead es un puntero:

ContadorBytes = ContadorBytes + *lpNumberOfBytesRead;

PD. En este caso el OVERLAPPED no esta siendo usado por la imagen que mostraste, se usa cuando las operaciones son ASINCRONAS.
#2876
Programación C/C++ / Re: Ayuda con driver
29 Julio 2010, 22:08 PM
Necesitas dos maquinas y puerto COM o firewire, tambien podes hacerlo en una maquina virtual con un puerto COM.

Busca en Google: kernel debugging windbg.


PD. No se ni como generas el codigo con las cabeceras que tiene y las estructuras indefinidas.
#2877
Código (cpp) [Seleccionar]
extern "C" void __stdcall __E__675__(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
{
...
ReadFile(hFile,lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead,lpOverlapped); //aca lpNumberOfBytesRead no tiene sentido

//AHORA, despues de llamar a ReadFile, lpNumberOfBytesRead contiene exactamente el numero de bytes leidos
...
}
#2878
Programación C/C++ / Re: Ayuda con driver
29 Julio 2010, 21:44 PM
¿Lo entendes? ¿Leiste el otro hilo completo?

Genera un dump o depuralo.
#2879
¿Y si el archivo ocupara 2GB? Lo normal es leer en pedazos (chunks).

En lpOverlapped podes encontrar el offset pero no es muy usada esa estructura, en ese caso podes obtener el offset con SetFilePointer/Ex (el sistema lleva el puntero del archivo).

El tamaño leido solo sera valido DESPUES de llamar a la funcion original y sera guardado en lpNumberOfBytesRead.

lpNumberOfBytesRead
[out] A pointer to the variable that receives the number of bytes read.
#2880
En lugar de intentar descagar una DLL que no se cargo, cosa que no tiene sentido, en caso de error pone esto:

Código (cpp) [Seleccionar]
res = 2;
DWORD err = GetLastError();
res = err; //es solo para depurarlo mas comodamente


Depura el programa y fijate que valor toma err.

PD. ¿Probaste copiando la DLL Jmysql2.dll en el path de TU DLL? Sino copiala en WINDOWS\SYSTEM32.