An overlapped pointer that was not created on the garbage collection heap is passed to specific operating system functions.
The following table shows the functions that this MDA tracks.
Module
|
Function
|
|---|
HttpApi.dll
| HttpReceiveHttpRequest |
IpHlpApi.dll
| NotifyAddrChange |
kernel32.dll
| ReadFile |
kernel32.dll
| ReadFileEx |
kernel32.dll
| WriteFile |
kernel32.dll
| WriteFileEx |
kernel32.dll
| ReadDirectoryChangesW |
kernel32.dll
| PostQueuedCompletionStatus |
MSWSock.dll
| ConnectEx |
WS2_32.dll
| WSASend |
WS2_32.dll
| WSASendTo |
WS2_32.dll
| WSARecv |
WS2_32.dll
| WSARecvFrom |
MQRT.dll
| MQReceiveMessage |
The potential for heap corruption is high for this condition because the AppDomain making the call might unload. If the AppDomain unloads, the application code will either free the memory for the overlapped pointer, causing corruption when the operation finishes, or the code will leak the memory, causing difficulties later.