Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

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

Mostrar Mensajes Menu

Mensajes - Astharoth

#1
General Programadores / Programar Un Driver
26 de Enero de 2006, 12:14:26 PM
 Hola

Por partes.

-Maquina virtual.
Siento desilusionaros, pero las maquinas virtuales (virtual pc / vmware) son bastante "limitadas" en ese sentido.
Independientemente del hardware que tengas instalado te emulan de grafica una S3 y de sonido una sound blaster.
No solo eso, sino que cualquier otro hardware adicional lo ignoran y no es reportado a la maquina virtual.
Solamente soportan usar la unidad de cd, la disquetera y en algunos casos una particion fisica de disco duro en vez de un fichero de "disco duro virtual"... asi que la solucion de maquina virtual descartada.

-El driver.
Bueno, yo no estoy puesto particularmente en drivers de tarjetas de sonido pero aun asi, a bote pronto no me viene a la cabeza un motivo por el cual no se pueda desarrollar un driver para tal dispositivo hardware en plataforma NT. Es posible que el hardware sea retorcido de cojones , pero vamos, desconociendo el hardware (si usa memory mapped io ports, si usa canales dma, si las transferencias se le indican asi o asa,etc) poco puedo decir al respecto.
Si el driver de 98 fuera un WDM otro gallo cantaria, ya que los WDM son "compatibles" entre plataformas (aunque yo no soy muy amigo de ellos tampoco, pero bueno).
La info necesaria para realizar el driver seria:
*Databook del hardware (eso iria muy bien)
*El driver de 9x (y una buena dosis de ingenieria inversa... a base de IDA o similar)
*Conocimientos de programacion de drivers de hardware en NT (evidentemente el DDK es muy extenso, hay muchos tipos de drivers y es necesario controlar al menos un minimo de eso)
*Conocimientos de arquitectura de NT (como va el sistema, que es una IRP, que es un IRQL... vamos, saber como funciona)
*Paciencia y ganas
*Sobre todo tiempo, un driver no se desarrolla en 3 semanas (ni tampoco se aprende en ese tiempo) y aun asi, desde que esta terminado hasta que esta correctamente depurado pasa tambien un tiempo (vamos, corregir incidencias de blue screen :). Que yo sepa no existe ningun curso de drivers, solo hay cursos de especializacion (por ejemplo en USA, la OSR) pero asumen que al menos "ya tienes base",  son cursos muy avanzados. La unica forma de aprender es tiempo (no 3 semanas, repito, un driver no es un ejemplo de nehe de opengl..) informacion (por ejemplo el Writting NT Device Drivers de viscarola y mason, navegar por los foros de OSR,etc) y practica (empezar a cacharrear como un burro con el ddk y depurando otros drivers a base de softice o windbg) :)


-Conclusion.
Es raro encontrar desarrollo de drivers "for free" (en plan opensource) para plataformas windows (hay casos como el driver opensource para las BT878 o el propio winpcap) pero es bastante raro. Encontrar persona o personas con conocimientos y motivacion suficiente para hacerlo for free va a ser como que complicado. Mucho me temo que tendras que mantener ese 9x.

Un Saludete

#2
General / Ex-trabajadores De Gextech Cuentan Su Experiencia
11 de Noviembre de 2005, 08:48:41 AM
 Hola Jare.

Si, cada compañia tiene sus mas y sus menos, puede tener mejor o peor reputacion.
Lo que no es "etico" es publicar datos internos o circunstancias internas.
Si uno tiene un problema, pues lo arregla en los juzgados y punto.

¿Que uno quiere advertir a los demas? Bueno, que diga, "mi experiencia en la compañia X no fue buena porque el trato no fue adecuado / tuve problemas N / etc".

El resto me parece "algo exagerado" y en muchos casos puede ser incluso ilegal (por ejemplo, como si yo divulgara aqui mismo informacion interna de Panda.. ni es etico ni es legal).

No dudo de la profesionalidad de nadie (sobre todo porque no conozco en profundidad a todos los implicados) pero al igual que Jare lleva 19 años dejandose los cojones con los videojuegos yo tambien llevo mis añitos en el desarrollo de soft.. y claro la experiencia siempre te demuestra cosas y te da datos.
Normalmente lo que veo suceder es:

-Empresa A, entra trabajador N (sabe algo de c++, chapurrea OpenGl o DirectX pero piensa que es el rey del mambo).  Empresa A pone condiciones J (bajas logicamente). Trabajador N se siente usado y se larga echando pestes. La empresa A continua funcionando.

-Empresa A, se monta, se vende el humo, se tima a la peña y se desmonta la empresa (es decir, no funciona mas).

-Empresa A, entra trabajador N (lleva años en desarrollo, controla y sabe lo que es un desarrollo). Empresa A pone condiciones N, desarrollador pone condiciones M, llegan a un acuerdo, se empieza a trabajar. Trabajador esta mas o menos contento, trabajador promociona mas o menos. La empresa A continua funcionando.

Casos particulares siempre los hay, y equivocaciones por parte de las personas (recordad, somos humanos, nos equivocamos) pero normalmente se repite alguno de los patrones que he repetido anteriormente.


Por cierto Jare,que sobre esto ya hace un tiempo le comente a WiseFox sobre el tema...

Y por cierto, ya me han dicho que has vuelto a la carga :P a ver si para navidades os hacemos otra visita mi costilla y yo y nos damos una cenorra.

Saludetes desde Amsterdam! :D
#3
Off-topic / Pantallazo Azul
22 de Septiembre de 2005, 10:01:00 AM
 

Hola :)

BAD_POOL_CALLER :)

Te suena el error de crt de "invalid pointer to deallocate"?

Pues es eso trasladado a Kernel. Algun driver (lo veras en el dump si hay stack fijo) ha intentado liberar una memoria ya liberada o que no le pertenece (por regla general).. aunque pueden ser otros casos. Te pego todos ellos de la ayuda de ddk.

Bug Check 0xC2: BAD_POOL_CALLER
The BAD_POOL_CALLER bug check has a value of 0x000000C2. This indicates that the current thread is making a bad pool request.

Parameters
The following parameters are displayed on the blue screen. Parameter 1 indicates the type of violation.

Parameter 1 Parameter 2 Parameter 3 Parameter 4 Cause of Error
0x00 0  Pool type Pool tag The current thread requested a zero-byte pool allocation.
0x01,
0x02,
or
0x04 Pointer to pool header First part of pool header contents 0  The pool header has been corrupted.
0x06 Reserved  Pointer to pool header Pool header contents The current thread attempted to free pool which was already freed.
0x07 Reserved  Memory contents of the pool block  Pointer to pool header  The current thread attempted to free pool which was already freed.
0x08 Current IRQL Pool type Size of allocation, in bytes The current thread attempted to allocate pool at an invalid IRQL.
0x09 Current IRQL Pool type Address of pool The current thread attempted to free pool at an invalid IRQL.
0x0A Address of pool Allocator's tag Tag being used in the attempted free The current thread attempted to free pool memory using the wrong tag.
(The memory may belong to another component.)

0x0B,
0x0C,
or
0x0D Address of pool Pool allocation's tag Bad quota process pointer The current thread attempted to release a quota on a corrupted pool allocation.
0x40 Starting address Start of system address space 0  The current thread attempted to free kernel pool at user-mode address.
0x41 Starting address Physical page frame Highest physical page frame The current thread attempted to free a nonallocated nonpaged pool address.
0x42
or
0x43 Address being freed 0  0  The current thread attempted to free a virtual address that was never in any pool.
0x50 Starting address Start offset in pages from beginning of paged pool Size of paged pool, in bytes The current thread attempted to free a nonallocated paged pool address.
0x60 Starting address  0  0  The current thread attempted to free an invalid contiguous memory address.
(The caller of MmFreeContiguousMemory s passing a bad pointer.)

0x99 Address being freed 0  0  The current thread attempted to free pool with an invalid address.
(This code can also indicate corruption in pool header.)

0x9A Pool type Number of bytes requested Pool tag The current thread marked an allocation request MUST_SUCCEED.
(This pool type is no longer supported.)

0x9B Pool type Number of bytes requested Caller's address The current thread attempted to allocate a pool with a tag of zero.
(This would be untrackable, and possibly corrupt the existing tag tables.)

0x9C Pool type Number of bytes requested Caller's address The current thread attempted to allocate a pool with a tag of "BIG".
(This would be untrackable, and possibly corrupt the existing tag tables.)



The _POOL_TYPE codes are enumerated in ntddk.h. In particular, zero indicates nonpaged pool and one indicates paged pool.

Cause
A bad pool request has been made by the current thread.

Resolving the Problem
Activate Driver Verifier to obtain more information about these errors. For details, see Driver Verifier.


Ya te digo, lo normal es que sea una llamada a ExFreePool o ExFreePoolWithTag que apunta a algo que no le pertenece o ha sido ya liberado.

Un Saludete.

PS: Yo de ti listaria los drivers de ese sistema, miraria los que son "extra" y empezaria a desactivar porque uno de ellos o una combinacion (si son hooks) te estan haciendo la pascua cosa mala.
#4
Off-topic / No Estudiar Informatica
22 de Septiembre de 2005, 09:27:14 AM
 
Hola.

Bueno, algunos me conoceis mas, otros menos.. pero desde la perspectiva que me da mis experiencias laborales aportare mi granito de arena.

Hay varios temas.

Por una parte la "calidad" de la profesion. Esto es debido a la gran cantidad de gente que "se metio a informatica" porque lo de los "ordenadores es muy guay" y "voy a ganar pasta sin dar un palo al agua". Esta gente o bien se dedica a medrar en la carrera y sacarsela.. o bien a pillarse un libro de visual basic , leerlo un poco y tenerlo a la vista por si viene alguien.
Esta gente es la que se apunta a las ofertas de trabajo y en las entrevistas dice "que es un master programando".. pero luego hace tal cantidad de chapuzas que la gente en general (empresarios) quedan altamente descontentos.

Esto produce una reaccion. La reaccion es que, el empresario diga "son todos iguales" y que el trabajo se "infravalore" con lo cual y con la mentalidad de "esto me lo hace cualquier capullo por cuatro duros" se plantea el tema.


La valoracion del trabajo. Efectivamente, cuesta mucho valorar el trabajo de un buen analista programador si no se conoce la profesion ya que se pueden (en algunos casos y aspectos de la profesion) generar un sistema que aparentemente funcione y luego no lo haga... asi que la diferencia de "un sistema A cojonudo" a "un sistema A que parece cojonudo" a ojos vista del empresario es inapreciable y si uno le cuesta "1000" y el otro "5000" pilla el de 1000.


Frustraciones de la vida... ese es el otro problema... Los programadores (ingenieros,como querais llamarles) tenemos tendencia a ser muy ombliguistas (como veis, yo me incluyo) , es decir, la tendencia a "medirsela" y ver "quien controla mas" es altisima. Asi que, tomemos un supuesto de un sujeto A que esta en segundo de la carrera.. no se le da mal pero no habia tocado un equipo en su vida antes de entrar en la carrera .. y despues de todo su esfuerzo y del que le queda levanta la vista y ve el panorama.

Ve malos sueldos, ve "aficionados" (pero curiosamente solo ve aficionados sin titulo.. no con el aunque los hay y a patadas) y ve gente que "sin tener titulo" tiene unos niveles que para el, en ese momento son inalcanzables. Esto produce frustracion y todo eso se puede observar como se descarga en foros como el de barrapunto (que si pro colegios.. cuando todo el mundo sabe que los colegios son una mafia mas.. que si intrusismo, que si titulo, que si yo se mas que tu... que si los ingenieros no tenemos que programa, para eso los de FP.. que si un ingeniero es para diseñar y dirigir proyectos..) ademas, de que (por lo que he podido tratar) la vision del mundo que "inyectan" en la carrera (al menos lo que he visto con la gente que he tenido que tratar de UV/UPV) es poco menos que incorrecta (plataformas de desarrollo, muchas metodologias, puestos, etc,etc) eso es lo primero que habria que cambiar.. la vision de "me saco titulo para tener trabajo" es incorrecta, deberia ser "me saco titulo que demuestra que he querido aprender esto y este papel dice que lo he logrado".

A partir de aqui, podriamos entrar en dos discusiones.. como por ejemplo las competencias de un ingeniero y como deberia de llegar a ellas (ni loco le doy a un tio recien salido de la carrera un equipo de 5 personas para que me haga algo) o bien en posibles soluciones a los problemas de valoracion.

Mi observacion particular, es que cuando uno se lo curra , es competente , hace bien su trabajo y adquiere un buen nivel tecnico en una determinada materia.. ya no existen ni los titulos, ni los ingenieros, ni los intrusos.. simplemente gente que vale y gente que no vale .. y os aseguro que muchas empresas (no consultoras, ni "generadoras de codigo basura") valoran (en mayor o menor medida) a esta gente.

Asi que, si quereis un consejo.. perseverar y aprender.. pero no aprendais por ganar dinero, aprender porque os guste aprender.. el dinero ya llegara mas tarde .. pero para el dinero hacen falta tambien otros factores.

Valorar a las personas por su actitud(lo mas importante) y por sus conocimientos(estos siempre se pueden adquirir).. no por sus titulos.

Un Saludo.
#5
Off-topic / Pantallazo Azul
01 de Septiembre de 2005, 09:22:31 AM
 
Hola

Bueno, voy a tirar luz encima de los errores.

MEMORY_MANAGENT

Este se da si el manager de memoria del propio windows ha tenido un error grave del cual no se puede recuperar.
Bueno, el error no lo ha tenido el, pero le han llamado a hacer algo (desde un driver) que no se puede hacer.
No te dice el driver porque posiblemente el stack de llamadas este corrupto.
De la ayuda del ddk.

Bug Check 0x1A: MEMORY_MANAGEMENT
The MEMORY_MANAGEMENT bug check has a value of 0x0000001A. This indicates that a severe memory management error occurred.

Parameters
The following parameters are displayed on the blue screen. Parameter 1 is the only parameter of interest; this identifies the exact violation.

Parameter 1 Cause of Error
0x1 The fork clone block reference count is corrupt. (This only occurs on checked builds of Windows.)
0x777 The caller is unlocking a system cache address that is not currently locked. (This address was either never mapped or is being unlocked twice.)
0x778 The system is using the very last system cache view address, instead of preserving it.
0x780
0x781 The PTEs mapping the argument system cache view have been corrupted.
0x1000 A caller of MmGetSystemAddressForMdl* tried to map a fully-cached physical page as non-cached. This action would cause a conflicting hardware translation buffer entry, and so it was refused by the operating system. Since the caller specified "bugcheck on failure" in the requesting MDL, the system had no choice but to bugcheck in this instance.
0x1010 The caller is unlocking a pageable section that is not currently locked. (This section was either never locked or is being unlocked twice.)
0x1234 The caller is trying lock a nonexistent pageable section.
0x1235 The caller is trying to protect an MDL with an invalid mapping.
0x3451 The PTEs of an outswapped kernel thread stack are corrupt.
0x8888
0x8889 Internal memory management structures are corrupt.
0x41283 The working set index encoded in the PTE is corrupt.
0x41284 A PTE or the working set list is corrupt.
0x41286 The caller is trying to free an invalid pool address.
0x41785 The working set list is corrupt.
0x61940 A PDE has been unexpectedly invalidated.
Other An unknown memory management error occurred.

Segun los parametros que te de en la BSOD, sabras que es.

PAGE_FAULT_IN_NONPAGE_AREA

A un driver se le ha ido un puntero de la olla y ha intentado acceder a una zona que no existe.
Eso en ring 3 es una excepcion que trapea windows y te da los famosos dialogos de "la memoria no se puede read.. etc" pero en ring 0 es una BSOD (por regla general).

Bug Check 0x50: PAGE_FAULT_IN_NONPAGED_AREA
The PAGE_FAULT_IN_NONPAGED_AREA bug check has a value of 0x00000050. This indicates that invalid system memory has been referenced.

Parameters
The following parameters are displayed on the blue screen.

Parameter Description
1 Memory address referenced
2 0: Read operation
1: Write operation

3 Address that referenced memory (if known)
4 Reserved  


If the driver responsible for the error can be identified, its name is printed on the blue screen and stored in memory at the location (PUNICODE_STRING) KiBugCheckDriver.

Cause
Bug check 0x50 usually occurs after the installation of faulty hardware or in the event of failure of installed hardware (usually related to defective RAM, be it main memory, L2 RAM cache, or video RAM).

Another common cause is the installation of a faulty system service.

Antivirus software can also trigger this error, as can a corrupted NTFS volume.

Resolving the Problem
Resolving a faulty hardware problem: If hardware has been added to the system recently, remove it to see if the error recurs. If existing hardware has failed, remove or replace the faulty component. You should run hardware diagnostics supplied by the system manufacturer. For details on these procedures, see the owner's manual for your computer.

Resolving a faulty system service problem: Disable the service and confirm that this resolves the error. If so, contact the manufacturer of the system service about a possible update. If the error occurs during system startup, restart your computer, and press F8 at the character-mode menu that displays the operating system choices. At the resulting Windows Advanced Options menu, choose the Last Known Good Configuration option. This option is most effective when only one driver or service is added at a time.

Resolving an antivirus software problem: Disable the program and confirm that this resolves the error. If it does, contact the manufacturer of the program about a possible update.

Resolving a corrupted NTFS volume problem: Run Chkdsk /f /r to detect and repair disk errors. You must restart the system before the disk scan begins on a system partition. If the hard disk is SCSI, check for problems between the SCSI controller and the disk.

Finally, check the System Log in Event Viewer for additional error messages that might help pinpoint the device or driver that is causing the error. Disabling memory caching of the BIOS might also resolve it.

Comments
Typically, this address is in freed memory or is simply invalid.

This cannot be protected by a try - except handler — it can only be protected by a probe.



DRIVER_IRQL_NOT_LESS_OR_EQUAL (klick.sys)

Este es uno muy comun... resulta que en kernel tienes varios niveles de prioridad.. pues ese driver (klick.sys) ha realizado una llamada a una funcion que necesita un nivel de prioridad mas bajo (por ejemplo alguna funcion de disco, o memoria paginada,etc)... en kernel por eso puedes pedir paged pool o non paged pool (vamos, si la memoria se ha de paginar o no)

Bug Check 0xA: IRQL_NOT_LESS_OR_EQUAL
The IRQL_NOT_LESS_OR_EQUAL bug check has a value of 0x0000000A. This indicates that Windows or a kernel-mode driver accessed paged memory at DISPATCH_LEVEL or above.

Parameters
The following parameters are displayed on the blue screen.

Parameter Description
1 Memory referenced
2 IRQL at time of reference
3 0: Read
1: Write

4 Address which referenced memory  


Cause
This bug check is issued if paged memory (or invalid memory) is accessed when the IRQL is too high.

The error that generates this bug check usually occurs after the installation of a faulty device driver, system service, or BIOS.

If you encounter bug check 0xA while upgrading to a later version of Microsoft® Windows®, this error might be caused by a device driver, a system service, a virus scanner, or a backup tool that is incompatible with the new version.

Resolving the Problem
If a kernel debugger is available, obtain a stack trace.

To resolve an error caused by a faulty device driver, system service, or BIOS

Restart your computer.
Press F8 at the character-based menu that displays the operating system choices.
Select the Last Known Good Configuration option from the Windows Advanced Options menu. This option is most effective when only one driver or service is added at a time.
To resolve an error caused by an incompatible device driver, system service, virus scanner, or backup tool

Check the System Log in Event Viewer for error messages that might identify the device or driver that caused the error.
Try disabling memory caching of the BIOS.
Run the hardware diagnostics supplied by the system manufacturer, especially the memory scanner. For details on these procedures, see the owner's manual for your computer.
Make sure the latest Service Pack is installed.
If your system has small computer system interface (SCSI) adapters, contact the adapter manufacturer to obtain updated Windows drivers. Try disabling sync negotiation in the SCSI BIOS, checking the cabling and the SCSI IDs of each device, and confirming proper termination.
For integrated device electronics (IDE) devices, define the onboard IDE port as Primary only. Also, check each IDE device for the proper master/slave/stand-alone setting. Try removing all IDE devices except for hard disks.
If the message appears during an installation of Windows, make sure that the computer and all installed peripherals are listed on the Microsoft Windows Hardware Compatibility List (HCL).

Yo de ti, quitaria todos aquellos drivers "nuevos" .. porque uno de ellos (o una combinacion de ellos si hookean, hacen movidas curiosas) esta dandote por saco.

Un Saludete.

#6
Campus Party / Campus Party 2005
28 de Julio de 2005, 02:38:50 PM
 
Hola.

Mmmmm.. a mi me pasa algo similar.
Me voy a pasar a dar una vuelta y aprovechare para saludar a gente.. asi que, vere si os localizo (zaelsius, el powerbook te delata) xD

Pues eso, que sepais que si no hay cambio de planes y el tiempo no lo impide (el que me quede libre) pasare a saludar.

:)
#7
Off-topic / Frases Célebres
11 de Julio de 2005, 10:51:03 AM
 
Hola.

Y continuando con el hilo... un compañero por aqui ha encontrado unas interesantes cuestiones a las cuales nos gustaria encontrar respuesta (si hay algun catolico practicante... por favor que conteste).

Aqui van:

a ) Me gustaría vender a mi hermana como esclava, tal y cómo indica el
Éxodo, 21:7. En los tiempos que vivimos, ¿qué precio piensa que sería el
más adecuado?

b ) El Levítico, 25:44, establece que puedo poseer esclavos, tanto varones
como hembras, mientras sean adquiridos en naciones vecinas. Un amigo mío asegura que esto es aplicable a los Andorranos, pero no a los catalanes.

Me podría aclarar este punto? ¿Por qué no puedo poseer catalanes?.

c ) Sé que no estoy autorizado a tener contacto con ninguna mujer mientras
esté en su período de impureza menstrual (Lev 5:19-24). El problema que se me plantea es el siguiente: ¿cómo puedo saber si lo están o no? He
intentado preguntarlo, pero bastantes mujeres se sienten ofendidas.

d ) Tengo un vecino que insiste en trabajar el sábado. El Éxodo 35:2,
claramente establece que ha de recibir la pena de muerte. ¿Estoy moralmente obligado a matarlo yo mismo? ¿Me podría aclarar usted este tema de alguna manera?

e ) En el Levítico 21:20, se establece que uno no puede acercarse al altar
de Dios si tiene un defecto en la vista. He de confesar que necesito gafas
para leer. ¿Mi agudeza visual tiene que ser del 100%? ¿Se puede relajar un
poco esta condición?

f ) La mayoría de mis amigos (varones) llevan el pelo arreglado y bien
cortado, incluso en la zona de las sienes a pesar de que esto está
expresamente prohibido por el levítico, 19:27. ¿Cómo han de morir?

g ) Sé gracias al Levítico, 11:6-8, que tocar la piel de un cerdo muerto me
convierte en impuro. Aún así, ¿puedo continuar jugando al fútbol si me
pongo guantes?

h ) Mi tío tiene una granja. Incumple lo que se dice en el Levítico 19:19,
ya que planta dos cultivos distintos en el mismo campo, y también lo
incumple su mujer, ya que lleva prendas hechas de dos tipos de tejido
diferentes (algodón y poliéster). Él, además, se pasa el día maldiciendo y
blasfemando.

¿Es realmente necesario llevar a cabo el engorroso procedimiento de reunir
a todos los habitantes del pueblo para lapidarlos? (Lev 24:10-16).

¿No podríamos sencillamente quemarlos vivos en una reunión familiar
privada, como se hace con la gente que duerme con sus parientes políticos?
(Lev 20:14).

Como colofon.. cualquier idea llevada al fanatismo irracional es dañina.. Particularmente os dire que prefiero creer en Nessie que en Dios ya que Nessie no condiciona la vida de sus creyentes.

Un Saludete.
#8
General Programadores / Problema Con Dll+upx+hyperthreading
08 de Julio de 2005, 08:03:19 AM
 
Yo tengo por aqui un dual xeon a 2.8 con HT.
Si dejas binarios en algun sitio lo pruebo y os digo si explota.

Un Saludete.
#9
General Programadores / Dll Hell
06 de Julio de 2005, 01:27:32 PM
 
Depende.

Una dll puede tener la crt dentro o usar la crt externa (msvcrt.dll si hablamos de VC).
Si tiene la crt interna (compilada estaticamente)  en su entrypoint al iniciarse, crea un heap para las funciones de memoria (new,delete,free,malloc,etc) y todas las llamadas iran contra este heap... asi que, si se intenta liberar ese puntero desde un heap que no es el suyo.. pues eso, "invalid pointer to deallocate".

Si la dll usa la crt externa (msvcrt) ya no tiene dicho problema ya que cuando se carga msvcrt, inicializa un heap para sus funciones exportadas de memoria .. estas son usadas por todos los modulos la aplicacion que importen msvcrt (por ejemplo si tienes 3 dll's que usan msvcrt, estas 3 dll's usaran ese heap y esas funciones de memoria).

Otra opcion es gestionarte el tema tu mismo con tus propias funciones de memoria (creandote un heap, pillando toda su memoria y administrandotela tu mismo)... o usar las funciones genericas del api de win32 (no las ansi c).. como apuntan por aqui.. pues un globalalloc por ejemplo..
Tambien puedes crearte tu un heap (CreateHeap) y dejar el handle al heap en una variable shared,etc,etc.. vamos, posibilidades mil.. todo depende de lo que uno vaya a hacer.

Particularmente yo prefiero.

- Para recursos "estaticos" (lease graficos, sonidos,etc,etc) usar mi propia gestion de memoria (con mi heap,etc,etc)
 de esta forma puedo usar estrategias de alocacion de memoria adecuadas para esos tamaños y controlarmelos a mi rollo.

- Para datos temporales, recursos de trapicheo,etc.. vamos, tipico array , tipica estructura temporal de conversion,etc,etc...
 uso un heap para cada dll (msvcrt estatica) de forma que si meto la pata y tengo un leak , con cosas como el processexplode (viene con el visual) puedo ver exactamente que modulo esta tragando memoria y asi ir aislando el leak (imprescindible cuando hablamos de aplicaciones relativamente grandes... 10/12 dll's , varios procesos y un buen porron de lineas de codigo > 180.000)..

Un Saludete :)
#10
Off-topic / Demostrado: Los Grafos Son Igual De Flojos
14 de Junio de 2005, 05:43:34 PM
 
Hola

Y yo añado mas, ojala y dedalo este super ocupado ganando dinero ;)

Un Saludete.
#11
Off-topic / Demostrado: Los Grafos Son Igual De Flojos
13 de Junio de 2005, 06:05:01 PM
 
Hola

Era el ejemplo que mejor conozco y que mas a mano tenia.

En el libro de Game Design: theory and practice hay un capitulo dedicado enteramente al "designing design tools" pero no tenia ninguna captura a mano ;)

Un Saludete.
#12
Off-topic / Demostrado: Los Grafos Son Igual De Flojos
13 de Junio de 2005, 03:09:24 PM
 
Hola.

Aqui basicamente siempre hay dos tipos de personas:

a ) El que se lo curra.
b ) El que solo hace castillos de naipes.

Un proyecto puede salir o no salir por muchos factores y en el caso "amateur" hay que tener en cuenta que el tiempo y la necesidad de
dinero (nadie vive del aire) pueden condenar un proyecto con gente del tipo "a".

La gente del tipo "b" aunque tenga todos los medios y todo el tiempo del mundo nunca saca nada.

Esto es indistintamente si se es coder, grafo, musico o extraterrestre.

Por otra parte, dos puntualizaciones.

a) El que es coder y quiere hacer algo, se busca la vida para los graficos (los usa de un juego, se los compone el,etc,etc..) hasta tener
algo visible. El que es grafo, se compone la programacion como puede (blitz,etc,etc) hasta tener algo visible.
B) El que no lo hace, es un elemento del tipo "b".

Y otra cosa, las herramientas a proporcionar para otros miembros del equipo (editores de recursos, mapeadores,etc) son suministradas
por el coder y este punto es imprescindible y no se puede ni postponer ni arreglar con un apaño ni dejarlo de lado ya que en las herramientas
recae el que el tiempo de otros miembros del equipo sea perfectamente aprovechado o no.
Es decir, cuanto mas facil se le ponga, mucho mejor, mas pruebas podra hacer y mejores resultados llegara a sacar en el mismo
tiempo que con una herramienta rastrera...

Y como muestra.. un boton:



Eso solo para importar modelos y poner materiales (amen de que nos sirve a nosotros para editar y probar shaders).. hace tambien algunas cosas mas (precalculos offline para colisiones, visualizacion,etc).. pero eso es "parte coder".

Un Saludete.


#13
General Programadores / Para Qué Sirve Esto?
03 de Junio de 2005, 02:26:18 PM
 
Hola.

Se activan, te digo yo que se activan... incluso a 1280.... xDDDDDDDDDDDDDD

Un Saludete.
#14
Off-topic / ¿eres Un Nerd?
05 de Mayo de 2005, 09:21:14 AM
 Hola.

Vaya, y yo que pensaba que el tener novia, vivir con ella y esas cosas me iba a volver normal... :(

Va y hago el test este y saco un 92% .. hay que joderse !  (uoh)

En fin, sera por cosas como que ayer estuve delante del pc (en el curro) desde las 8 hasta las 6:30 y luego delante del pc (en casa) desde las 7:10 hasta la 1:00am ... xDDDDDDDDDDDDDD

Un Saludete.

PS: Seguro que el vivir asi me quita puntuacion porque no puedo tener carteles "biohazzard" ni comida rancia desperdigada por ahi.. aunque dicho sea de paso siempre, en ese aspecto he sido bastante ordenador  :lol:  
#15
General Programadores / Twse, Se Acerca Ya... :)
18 de Abril de 2005, 08:28:57 AM
 
Hola.

Aparte de las que tienes "fichadas", si te quieres asegurar, con los visual studio viene una herramienta llamada "depends.exe" (hay tambien muchas otras free por ahi, si mal no recuerdo el PE Explorer tambien te lo muestra) te saca la lista de dll's con las que tienes dependencias estaticas (es decir, por importacion de simbolos y que se cargan y resuelven al cargar el PE).

Con ello tendras la lista completa de las que requiera tu ejecutable.. eso si, sin las que uses manualmente a base de LoadLibrary y GetProcAddress.

Lo que yo te recomiendo antes de sacar un paquete a release (a ti y a todos) es instalar en maquina limpia (vale por ejemplo en un vmware o virtualpc) y ver que todo queda ok (no solo por ficheros, sino por paths, etc,etc,etc,etc).

Un Saludete.





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.