MAPI Advise() 호출은 0x8007000E(E_OUTOFMEMORY)를 반환합니다.

원래 KB 번호: 269794

증상

Advise 함수를 약 7,800~7,900번 호출하면 오류 0x8007000E(E_OUTOFMEMORY)으로 다음 Advise 호출이 실패할 수 있습니다.

원인

Advise를 호출하여 등록된 알림은 공유 메모리 공간을 사용합니다. 기본적으로 힙 크기는 0x100000 설정됩니다. 새 알림을 등록할 때 힙 크기를 초과하면 E_OUTOFMEMORY 오류가 반환됩니다.

이 제한은 시스템 전체입니다. 즉, Advise를 호출하는 두 개의 프로그램을 실행하는 경우 두 프로그램의 결합된 최대값은 7,900보다 작아야 합니다.

해결 방법

다음 레지스트리 키를 설정하여 힙 크기를 0x800000 높이로 구성할 수 있습니다.

HKLM\SOFTWARE\Microsoft\Windows 메시징 하위 시스템
값 이름: SharedMemMaxSize
값 형식: REG_DWORD
값 데이터: 0x800000

HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem\Applications\<MyApp>
값 이름: SharedMemMaxSize
값 형식: REG_DWORD
값 데이터: 0x800000

이 시나리오 <에서 MyApp> 은 애플리케이션의 이름입니다(.exe 확장 없음). 예를 들어 애플리케이션이 Mad.exe 경우 MyApp> 값에 MAD를< 입력합니다.