KdComDispatcher Class Reference

Contains implementations for KdComDispatcher::KdSendPacket() and KdComDispatcher::KdReceivePacket() functions that are executed on host side. More...

#include <kdcomdisp.h>

Inherits IKdComDispatcher.

Collaboration diagram for KdComDispatcher:

List of all members.

Public Member Functions

 KdComDispatcher (const TCHAR *pszPipeName)
void KdResetPacketNumbering (bool InitialSetting)
 Called internally to reset the packet numbering scheme.
void SetKdDebuggerNotPresent (bool Value)
bool GetKdDebuggerNotPresent ()
void KdpSendControlPacket (ULONG PacketType, ULONG NextPacketId)
 Called internally to call a bodyless control packet (such as ACK or RETRY).
KD_RECV_CODE KdCompReceivePacketLeader (ULONG, ULONG *pSignature, PKD_CONTEXT pContext)
unsigned KdpComputeChecksum (const void *pBuffer, unsigned Size)
 Called to compute checksum of a data block.
KD_RECV_CODE __stdcall KdReceivePacket (ULONG PacketType, PKD_BUFFER FirstBuffer, PKD_BUFFER SecondBuffer, PULONG PayloadBytes, PKD_CONTEXT KdContext)
 Called inside VMWARE-VMX.EXE process space with parameters unmarshalled from KdReceivePacket() call in KDVMWARE.DLL.
bool __stdcall KdSendPacket (ULONG PacketType, PKD_BUFFER FirstBuffer, PKD_BUFFER SecondBuffer, PKD_CONTEXT KdContext)
 Called inside VMWARE-VMX.EXE process space with parameters unmarshalled from KdSendPacket() call in KDVMWARE.DLL.
virtual void ReportProtocolVersionError (int GuestVersion, int HostVersion)
 Called by KdRpcDispatcher to report protocol version mismatch.
void SimulateWindowsTermination ()
 Sends a packet stating that NTOSKRNL was unloaded, that makes WinDbg/DBGENG end the session and prevents it from hanging when VM unloads.
 ~KdComDispatcher ()

Private Types

enum  { KdMaxBufferSize = 0xFA0 }
enum  { KdMinPacketCountForSuccessfulLink = 5 }

Private Attributes

PipeServer< false, true, true > m_Pipe
unsigned KdCompNumberRetries
unsigned KdCompRetryCount
unsigned KdCompNextPacketIdToSend
unsigned KdCompPacketIdExpected
bool KD_DEBUGGER_NOT_PRESENT
unsigned m_PacketsSentFromLastReset
unsigned m_PacketsGotFromLastReset
unsigned m_SequentialResetCount
TraceAssistant m_TraceAssistant
PacketLogger m_PacketLogger


Detailed Description

Contains implementations for KdComDispatcher::KdSendPacket() and KdComDispatcher::KdReceivePacket() functions that are executed on host side.

This class contains host-side implementations of KdSendPacket() and KdReceivePacket() functions. These methods are called by KdRpcDispatcher class via IKdComDispatcher interface.

Remarks:
See the kdxxx.h file reference for info about KdSendPacket() and KdReceivePacket().

Definition at line 24 of file kdcomdisp.h.


Member Enumeration Documentation

anonymous enum [private]

Enumerator:
KdMaxBufferSize 

Definition at line 37 of file kdcomdisp.h.

anonymous enum [private]

Enumerator:
KdMinPacketCountForSuccessfulLink 

Definition at line 40 of file kdcomdisp.h.


Constructor & Destructor Documentation

KdComDispatcher::KdComDispatcher ( const TCHAR *  pszPipeName  )  [inline]

Definition at line 52 of file kdcomdisp.h.

Here is the call graph for this function:

KdComDispatcher::~KdComDispatcher (  )  [inline]

Definition at line 119 of file kdcomdisp.h.

Here is the call graph for this function:


Member Function Documentation

bool KdComDispatcher::GetKdDebuggerNotPresent (  )  [inline, virtual]

Implements IKdComDispatcher.

Definition at line 77 of file kdcomdisp.h.

KD_RECV_CODE KdComDispatcher::KdCompReceivePacketLeader ( ULONG  ,
ULONG *  pSignature,
PKD_CONTEXT  pContext 
)

Definition at line 18 of file kdcomdisp.cpp.

Here is the call graph for this function:

unsigned KdComDispatcher::KdpComputeChecksum ( const void *  pBuffer,
unsigned  Size 
) [inline]

Called to compute checksum of a data block.

Definition at line 90 of file kdcomdisp.h.

void KdComDispatcher::KdpSendControlPacket ( ULONG  PacketType,
ULONG  NextPacketId 
)

Called internally to call a bodyless control packet (such as ACK or RETRY).

Definition at line 86 of file kdcomdisp.cpp.

Here is the call graph for this function:

KD_RECV_CODE __stdcall KdComDispatcher::KdReceivePacket ( ULONG  PacketType,
PKD_BUFFER  FirstBuffer,
PKD_BUFFER  SecondBuffer,
PULONG  PayloadBytes,
PKD_CONTEXT  KdContext 
)

Called inside VMWARE-VMX.EXE process space with parameters unmarshalled from KdReceivePacket() call in KDVMWARE.DLL.

Definition at line 114 of file kdcomdisp.cpp.

Here is the call graph for this function:

void KdComDispatcher::KdResetPacketNumbering ( bool  InitialSetting  )  [inline]

Called internally to reset the packet numbering scheme.

Definition at line 65 of file kdcomdisp.h.

bool __stdcall KdComDispatcher::KdSendPacket ( ULONG  PacketType,
PKD_BUFFER  FirstBuffer,
PKD_BUFFER  SecondBuffer,
PKD_CONTEXT  KdContext 
)

Called inside VMWARE-VMX.EXE process space with parameters unmarshalled from KdSendPacket() call in KDVMWARE.DLL.

Definition at line 389 of file kdcomdisp.cpp.

Here is the call graph for this function:

void KdComDispatcher::ReportProtocolVersionError ( int  GuestVersion,
int  HostVersion 
) [virtual]

Called by KdRpcDispatcher to report protocol version mismatch.

Implements IKdComDispatcher.

Definition at line 529 of file kdcomdisp.cpp.

Here is the call graph for this function:

void KdComDispatcher::SetKdDebuggerNotPresent ( bool  Value  )  [inline, virtual]

Implements IKdComDispatcher.

Definition at line 72 of file kdcomdisp.h.

void KdComDispatcher::SimulateWindowsTermination (  ) 

Sends a packet stating that NTOSKRNL was unloaded, that makes WinDbg/DBGENG end the session and prevents it from hanging when VM unloads.

Definition at line 577 of file kdcomdisp.cpp.

Here is the call graph for this function:


Member Data Documentation

Definition at line 35 of file kdcomdisp.h.

Definition at line 32 of file kdcomdisp.h.

Definition at line 29 of file kdcomdisp.h.

Definition at line 33 of file kdcomdisp.h.

Definition at line 30 of file kdcomdisp.h.

Definition at line 49 of file kdcomdisp.h.

Definition at line 43 of file kdcomdisp.h.

Definition at line 42 of file kdcomdisp.h.

PipeServer<false, true, true> KdComDispatcher::m_Pipe [private]

Definition at line 27 of file kdcomdisp.h.

Definition at line 45 of file kdcomdisp.h.

Definition at line 47 of file kdcomdisp.h.


The documentation for this class was generated from the following files: