ho trovato questo interessante articolo, a me a volte succede.

Ve lo posto, poi cerchero' di capire meglio il tutto:

Errore di applicazione Applicazione non correttamente inizializzata (0xc0000142 )

dalla rete

Forse questo post potrà essere utile a qualcuno..
(Di certo..se stai leggendo .. molto probabilmente ti servirà..)

Da tempo avevo un problema piuttosto strano:
dopo un tot di giorni di uptime del mio Windows XP e dopo un uso piuttosto intensivo dello stesso .. avendo molte finestre (in senso stretto) aperte .. a volte accadeva che non mi aprisse più nulla o addirittura le finestre


venivano ‘disegnate’ in modo incompleto (explorer con menu incompleti..barre mancanti..ecc)
immaginavo che il problema risiedesse nella memoria, ma avendo 2,5GB di ram non capivo come mai si verificasse il problema anche quando utilizzati ne risultavano appena 600M.

Da poco nel mio registro sono comparsi (grazie a Dio) degli errori quando si verificava questo.

Popup dell’applicazione: dwwin.exe - Errore di applicazione : Applicazione non correttamente inizializzata (0xc0000142). Fare clic su OK per chiudere l’applicazione.

In un sistema con lingua inglese apparirebbe in questo modo:
“The application failed to initialize properly (0xc0000142). Click on OK to terminate the application.”

Grazie a ..Google sono riuscito a risalire al problema e a sistemarlo grazie a questo post[*] che mi ha fatto capire tante cose.

http://blogs.msdn.com/ntdebugging/ar...-overview.aspx

ecco una breve traduzione di ciò che più ci interessa:

Ogni oggetto desktop ha un singolo desktop heap associato. Il desktop heap conserva alcuni oggetti user come finestre, menu e hooks. Quando un’applicazione richiede un oggetto user, vengono effettuate delle chiamate a funzioni di user32.dll per allocare questi oggetti.
Se un applicazione non dipende da user32.dll ovviamente non consumerà memoria nel desktop heap. Osserviamo come un applicazione arriva ad usare il desktop heap:

1. un applicazione ha bisgno di creare una finestra, chiama CreateWindowEx in user32.dll
2. User32.dll fa una chiamata di sistema in kernel mode e finisce in win32k.sys
3. Win32k.sys alloca l’oggetto finestra dal desktop heap
4. Un handle della finestra (un HWND) è tornato al chiamante
4. L’applicazione e altri processi nella stessa sessione possono riferirsi a quest’oggetto finestra attraverso il suo HWND

Visto che user32.dll necessita di spazio nel desktop heap per funzionare correttamente, un esaurimento dell’heap genererà un errore 0xc00000142 (STATUS_DLL_INIT_FAILED) e il programma da voi lanciato non si aprirà restituendo (a volte si a volte no) il messaggio di errore in oggetto (se non c’è proprio spazio nell’heap non si avrà neanche la fortuna di potere vedere la finestra dell’errore..perchè non ci sarà spazio neanche per lei…)

Il problema sembra quindi dipendere dal fatto che saturo saturavo il desktop heap.
Aumentando la porzione di memoria da dedicare all’heap (Windows SharedSection=1024,4096,512) sono riuscito a risolvere.

Per assicurarsi che sia proprio questa la causa del vostro problema usate dheapmon lo trovate nella pagina dei tools di debug Microsoft

http://www.microsoft.com/downloads/d...displaylang=en

http://blogs.msdn.com/ntdebugging/ar...debugging.aspx



Nota:
“For many applications 3072K is too high, although MS recommend 512 K (in Q142676) for many applications this is too low.

512 K will support approximately 2,500 windows, menus, pens, icons, etc.
1024 K will support approximately 5,000 windows, menus, pens, icons, etc.
3072 K will support approximately 15,000 windows, menus, pens, icons, etc. “
[da: http://www.ss64.com/orasyntax/desktopheap.html]
[*] Vi consiglio vivamente comunque di leggere il post linkato sopra per capire meglio cosa si fa quando si va a cambiare questo valore e cosa cambia nel vostro sistema.