A chamada MAPI Advise() retorna 0x8007000E (E_OUTOFMEMORY)

Número de KB original: 269794

Sintomas

Quando você chama a função Aconselhar cerca de 7.800 a 7.900 vezes, a próxima chamada Aconselhar pode falhar com o erro 0x8007000E (E_OUTOFMEMORY).

Motivo

As notificações, que são registradas chamando Aconselhar, usam um espaço de memória compartilhado. Por padrão, o tamanho do heap é definido como 0x100000. Se o tamanho do heap for excedido ao registrar uma nova notificação, o erro E_OUTOFMEMORY será retornado.

Esse limite é em todo o sistema; em outras palavras, se você estiver executando dois programas que chamam Desaconselhe, o máximo combinado para ambos os programas deverá ser menor que 7.900.

Solução alternativa

Você pode configurar o tamanho do heap para ser tão alto quanto 0x800000 definindo as seguintes chaves de registro:

Subsistema HKLM\SOFTWARE\Microsoft\Windows Messaging
Nome do valor: SharedMemMaxSize
Tipo de valor: REG_DWORD
Dados de valor: 0x800000

HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem\Applications\<MyApp>
Nome do valor: SharedMemMaxSize
Tipo de valor: REG_DWORD
Dados de valor: 0x800000

Nesse cenário, <MyApp> é o nome do seu aplicativo (sem a extensão .exe). Por exemplo, se seu aplicativo estiver Mad.exe, insira MAD para o <valor MyApp> .