HRESULT __stdcall DpPeekChannelData(CHANNEL_HANDLE handle, char * buf, int lenBuf, int * pLenPeeked) { Lock(&viewerMain.spinLockChannelTable); Channel * channel = (Channel *)viewerMain.channelHandleTable.Get((int)handle); Unlock(&viewerMain.spinLockChannelTable); if (channel == 0) { if (pLenPeeked != 0) { *pLenPeeked = 0; } return E_INVALID_CHANNEL_HANDLE; } int lenPeeked = channel->Peek(buf, lenBuf); if (pLenPeeked != 0) { *pLenPeeked = lenPeeked; } if (lenPeeked < lenBuf) { if (!channel->IsWriterAlive()) return E_CHANNEL_CLOSED; } return S_OK; }