ORPC_DBG_BUFFER structure

The ORPC_DBG_BUFFER structure is the buffer format used to marshalled RPC data to the methods of the IOrpcDebugNotify interface.

Syntax

typedef struct _ORPC_DBG_BUFFER {
  DWORD alwaysOrSometimes;
  BYTE  verMajor;
  BYTE  verMinor;
  DWORD cbRemaining;
  GUID  guidSemantic;
  union {
    BOOL   fStopOnOtherSide;
    USHORT wDebuggingOpCode;
    USHORT cExtent;
    BYTE   padding[2];
    struct {
      ULONG cb;
      GUID  guidExtent;
      BYTE  *rgbData;
    };
  };
} ORPC_DBG_BUFFER, *PORPC_DBG_BUFFER;

Members

alwaysOrSometimes

A value that controls debugger spawning. alwaysOrSometimes can be one of the following values:

Value Meaning
ORPC_DEBUG_ALWAYS
0x00000000
If set, COM will always raise the client or server notification on the receiver.
ORPC_DEBUG_IF_HOOK_ENABLED
0x00000001
If set, COM will only raise the client or server notification on the receiver if COM debugging has been enabled by calling DllDebugObjectRPCHook in that process with fTrace set to TRUE.

verMajor

The major version number of the data format specification.

verMinor

The minor version number of the data format specification.

cbRemaining

The number of bytes, inclusive of cbRemaining, that follow in this structure.

guidSemantic

A GUID that determines which members of the union are present below. guidSemantic can take one of the following values:

Value Meaning
9CADE560-8F43-101A-B07B-00DD01113F11
Determines if single stepping is to be performed by the debugger. Only the fStopOnOtherSide member of the union is present below.
D62AEDFA-57EA-11ce-A964-00AA006C3706
Determines if RPC marshalled data and debugging opcodes are passed to the receiver. All of the members of the union are present below with the exception of fStopOnOtherSide.

fStopOnOtherSide

If TRUE, single stepping is performed by the debugger and it should step out of the server and continue execution once the other side is reached. Otherwise, single stepping is not performed and debugger execution stops on the other side.

wDebuggingOpCode

A value that allows for one of a series of operations to be specified. wDebuggingOpCode can take one of the following values:

Value Meaning
0x0000
No operation.
0x0001
If set, single step semantics are identical to fStopOnOtherSide when set to TRUE.

cExtent

Padding. Do not use.

padding

Padding. Do not use.

cb

The size, in bytes of the data in rgbData.

guidExtent

A GUID that determines the type of data in rgbData. guidExtent can take one of the following values:

Value Meaning
53199051-57EB-11ce-A964-00AA006C3706
rgbData is a marshalled interface pointer.

rgbData

A BYTE buffer used to pass RPC marshalled COM data between the client and server debuggers. The contents of rgbData are determined by the GUID in guidExtent.

guidExtent Value rgbData contents
53199051-57EB-11ce-A964-00AA006C3706 A marshalled interface pointer that results from calling CoMarshalInterface. The marshalled pointer is converted into its corresponding interface pointer using CoUnmarshalInterface.

Remarks

This members of this structure have 1-byte alignment and are always transmitted in little-endian byte order.

Requirements

Requirement Value
Minimum supported client
Windows 2000 Professional [desktop apps only]
Minimum supported server
Windows 2000 Server [desktop apps only]
Header
N/A

See also

ORPC_DBG_ALL

ORPC_INIT_ARGS

DllDebugObjectRPCHook

IOrpcDebugNotify