Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oryginalny numer KB: 269794
Symptomy
Po wywołaniu funkcji Advise od około 7800 do 7900 razy następne wywołanie Advise może zakończyć się niepowodzeniem z błędem 0x8007000E (E_OUTOFMEMORY).
Przyczyna
Powiadomienia, które są rejestrowane przez wywołanie Advise, wykorzystują udostępnioną przestrzeń pamięci. Domyślnie rozmiar sterty jest ustawiany jako 0x100000. Jeśli rozmiar sterty zostanie przekroczony podczas rejestrowania nowego powiadomienia, zostanie zwrócony błąd E_OUTOFMEMORY.
Ten limit dotyczy całego systemu; innymi słowy, jeśli uruchamiasz dwa programy, które używają funkcji Advise, łącznie maksymalnie oba programy powinny mieć mniej niż 7900.
Rozwiązanie
Można skonfigurować rozmiar sterty do wartości maksymalnej 0x800000, ustawiając następujące klucze rejestru:
HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem
Nazwa wartości: SharedMemMaxSize
Typ wartości: REG_DWORD
Dane wartości: 0x800000
HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem\Applications\<MyApp>
Nazwa wartości: SharedMemMaxSize
Typ wartości: REG_DWORD
Dane wartości: 0x800000
W tym scenariuszu <MyApp> jest nazwą aplikacji (bez rozszerzenia .exe). Jeśli na przykład aplikacja jest Mad.exe, wprowadź wartość MAD dla <wartości MyApp> .