DER MAPI Advise()-Aufruf gibt 0x8007000E (E_OUTOFMEMORY) zurück.

Ursprüngliche KB-Nummer: 269794

Problembeschreibung

Wenn Sie die Advise-Funktion etwa 7.800 bis 7.900 Mal aufrufen, schlägt der nächste Advise-Aufruf möglicherweise mit dem Fehler 0x8007000E (E_OUTOFMEMORY) fehl.

Ursache

Benachrichtigungen, die durch Aufrufen von Advise registriert werden, verwenden einen freigegebenen Speicherbereich. Standardmäßig ist die Heapgröße auf 0x100000 festgelegt. Wenn die Heapgröße beim Registrieren einer neuen Benachrichtigung überschritten wird, wird der E_OUTOFMEMORY Fehler zurückgegeben.

Dieser Grenzwert ist systemweit; Mit anderen Worten, wenn Sie zwei Programme ausführen, die Advise aufrufen, sollte das kombinierte Maximum für beide Programme weniger als 7.900 sein.

Problemumgehung

Sie können die Heapgröße so konfigurieren, dass sie so hoch wie 0x800000 ist, indem Sie die folgenden Registrierungsschlüssel festlegen:

HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem
Wertname: SharedMemMaxSize
Werttyp: REG_DWORD
Wertdaten: 0x800000

HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem\Applications\<MyApp>
Wertname: SharedMemMaxSize
Werttyp: REG_DWORD
Wertdaten: 0x800000

In diesem Szenario <ist MyApp> der Name Ihrer Anwendung (ohne die .exe-Erweiterung). Wenn Ihre Anwendung z. B. Mad.exe ist, geben Sie mad für den <Wert MyApp> ein.