API events record calls to the HDLC API. Each API call will generate at lease two trace events, one on entry to the API which records the arguments, and one on return from the API which records the return code and any returned data. Both the call and return events include the caller process and thread ID. API calls which involve asynchronous notification may record a completion event if the API call returns ERROR_IO_PENDING. Completion events do not contain the process and thread ID of the caller, but may be matched to the last API call of the specified type that returned ERROR_IO_PENDING because only one call of each type may be pending.
The purpose of splitting each API call into an entry and return event is to allow observation of other events that may occur as a result of processing the API call, but before the API call returns. The split event logging maintains synchronization of such events with the API events.
The following API calls are NOT traced:
MgslOpen
MgslClose
MgslGetTraceEvent
MgslSetPortConfig
MgslGetPortConfig
The contents of the EventData member of the MGSL_TRACE_EVENT structure will be specific to each API EventType. Most API event types have event data structures defined to allow easier access to the event data. Some API event types return only a simple data type, such as an unsigned long, in which case there is no associated event data structure. The reference below lists the API event types and the associated event data types.
MgslCancelReceive call.
EventData
typedef struct _API_TRACE_CANCEL_RECEIVE_CALL
{
ULONG ProcessId;
ULONG ThreadId;
} API_TRACE_CANCEL_RECEIVE_CALL, *PAPI_TRACE_CANCEL_RECEIVE_CALL;
MgslCancelReceive return.
EventData
typedef struct _API_TRACE_CANCEL_RECEIVE_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_CANCEL_RECEIVE_RETURN, *PAPI_TRACE_CANCEL_RECEIVE_RETURN;
MgslCancelTransmit call.
EventData
typedef struct _API_TRACE_CANCEL_TRANSMIT_CALL
{
ULONG ProcessId;
ULONG ThreadId;
} API_TRACE_CANCEL_TRANSMIT_CALL, *PAPI_TRACE_CANCEL_TRANSMIT_CALL;
MgslCancelTransmit return.
EventData
typedef struct _API_TRACE_CANCEL_TRANSMIT_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_CANCEL_TRANSMIT_RETURN, *PAPI_TRACE_CANCEL_TRANSMIT_RETURN;
MgslCancelWaitEvent call.
EventData
typedef struct _API_TRACE_CANCEL_WAIT_EVENT_CALL
{
ULONG ProcessId;
ULONG ThreadId;
} API_TRACE_CANCEL_WAIT_EVENT_CALL, *PAPI_TRACE_CANCEL_WAIT_EVENT_CALL;
MgslCancelWaitEvent return.
EventData
typedef struct _API_TRACE_CANCEL_WAIT_EVENT_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_CANCEL_WAIT_EVENT_RETURN, *PAPI_TRACE_CANCEL_WAIT_EVENT_RETURN;
MgslEnableReceiver call.
EventData
typedef struct _API_TRACE_ENABLE_RECEIVER_CALL
{
ULONG ProcessId;
ULONG ThreadId;
BOOL EnableFlag;
} API_TRACE_ENABLE_RECEIVER_CALL, *PAPI_TRACE_ENABLE_RECEIVER_CALL;
MgslEnableReceiver return.
EventData
typedef struct _API_TRACE_ENABLE_RECEIVER_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_ENABLE_RECEIVER_RETURN, *PAPI_TRACE_ENABLE_RECEIVER_RETURN;
MgslEnableTransmitter call.
EventData
typedef struct _API_TRACE_ENABLE_TRANSMITTER_CALL
{
ULONG ProcessId;
ULONG ThreadId;
BOOL EnableFlag;
} API_TRACE_ENABLE_TRANSMITTER_CALL, *PAPI_TRACE_ENABLE_TRANSMITTER_CALL;
MgslEnableTransmitter return.
EventData
typedef struct _API_TRACE_ENABLE_TRANSMITTER_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_ENABLE_TRANSMITTER_RETURN, *PAPI_TRACE_ENABLE_TRANSMITTER_RETURN;
MgslGetAssignedResources call
EventData
typedef struct API_TRACE_GET_ASSIGNED_RESOURCES_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PMGSL_ASSIGNED_RESOURCES pResources;
} API_TRACE_GET_ASSIGNED_RESOURCES_CALL, *PAPI_TRACE_GET_ASSIGNED_RESOURCES_CALL;
MgslGetAssignedResources return
EventData
typedef struct API_TRACE_GET_ASSIGNED_RESOURCES_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
MGSL_ASSIGNED_RESOURCES Resources;
} API_TRACE_GET_ASSIGNED_RESOURCES_RETURN, *PAPI_TRACE_GET_ASSIGNED_RESOURCES_RETURN;
MgslGetParams call
EventData
typedef struct _API_TRACE_GET_PARAMS_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PMGSL_PARAMS pParams;
} API_TRACE_GET_PARAMS_CALL, *PAPI_TRACE_GET_PARAMS_CALL;
MgslGetParams return
EventData
typedef struct _API_TRACE_GET_PARAMS_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
MGSL_PARAMS Params;
} API_TRACE_GET_PARAMS_RETURN, *PAPI_TRACE_GET_PARAMS_RETURN;
MgslGetSerialSignals call
EventData
typedef struct _API_TRACE_GET_SERIAL_SIGNALS_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PUCHAR pSerialSignals;
} API_TRACE_GET_SERIAL_SIGNALS_CALL, *PAPI_TRACE_GET_SERIAL_SIGNALS_CALL;
MgslGetSerialSignals return
EventData
typedef struct _API_TRACE_GET_SERIAL_SIGNALS_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
UCHAR SerialSignals;
} API_TRACE_GET_SERIAL_SIGNALS_RETURN, *PAPI_TRACE_GET_SERIAL_SIGNALS_RETURN;
MgslGetTraceLevel call
EventData
typedef struct API_TRACE_GET_TRACE_LEVEL_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PULONG pTraceLevel;
} API_TRACE_GET_TRACE_LEVEL_CALL, *PAPI_TRACE_GET_TRACE_LEVEL_CALL;
MgslGetTraceLevel return
EventData
typedef struct API_TRACE_GET_TRACE_LEVEL_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
ULONG TraceLevel;
} API_TRACE_GET_TRACE_LEVEL_RETURN, *PAPI_TRACE_GET_TRACE_LEVEL_RETURN;
MgslLoopModeSendDone call.
EventData
typedef struct API_TRACE_LOOPMODE_SEND_DONE_CALL
{
ULONG ProcessId;
ULONG ThreadId;
} API_TRACE_LOOPMODE_SEND_DONE_CALL, *PAPI_TRACE_LOOPMODE_SEND_DONE_CALL;
MgslLoopModeSendDone return.
EventData
typedef struct API_TRACE_LOOPMODE_SEND_DONE_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_LOOPMODE_SEND_DONE_RETURN, *PAPI_TRACE_LOOPMODE_SEND_DONE_RETURN;
MgslReceive call. Note that this event records the pointer to the receive request, and if the receive request pointer is valid, the contents of the receive request header are recorded. If the pointer is invalid then the RcvReq member is undefined.
EventData
typedef struct _API_TRACE_RECEIVE_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PMGSL_RECEIVE_REQUEST pRcvReq;
MGSL_RECEIVE_REQUEST RcvReq;
LPOVERLAPPED pOverlapped;
} API_TRACE_RECEIVE_CALL, *PAPI_TRACE_RECEIVE_CALL;
A pending call to MgslReceive has been completed. Note that only the receive request header is recorded (returned status and data count). The received data is recorded in the DataEvent_ReceiveData trace event if data tracing is enabled.
EventData
typedef struct _API_TRACE_RECEIVE_COMPLETE
{
MGSL_RECEIVE_REQUEST RcvReq;
} API_TRACE_RECEIVE_COMPLETE, *PAPI_TRACE_RECEIVE_COMPLETE;
MgslReceive return. Note that only the receive request header is recorded (returned status and data count). The received data is recorded in the DataEvent_ReceiveData trace event if data tracing is enabled.
EventData
typedef struct _API_TRACE_RECEIVE_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
MGSL_RECEIVE_REQUEST RcvReq;
} API_TRACE_RECEIVE_RETURN, *PAPI_TRACE_RECEIVE_RETURN;
MgslResetTraceBuffersCall.
EventData
typedef struct _API_TRACE_RESET_TRACE_BUFFERS_CALL
{
ULONG ProcessId;
ULONG ThreadId;
} API_TRACE_RESET_TRACE_BUFFERS_CALL, *PAPI_TRACE_RESET_TRACE_BUFFERS_CALL;
MgslResetTraceBuffers return.
EventData
typedef struct _API_TRACE_RESET_TRACE_BUFFERS_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_RESET_TRACE_BUFFERS_RETURN, *PAPI_TRACE_RESET_TRACE_BUFFERS_RETURN;
MgslSetIdleMode call.
EventData
typedef struct _API_TRACE_SET_IDLE_MODE_CALL
{
ULONG ProcessId;
ULONG ThreadId;
ULONG IdleMode;
} API_TRACE_SET_IDLE_MODE_CALL, *PAPI_TRACE_SET_IDLE_MODE_CALL;
MgslSetIdleMode return.
EventData
typedef struct _API_TRACE_SET_IDLE_MODE_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_SET_IDLE_MODE_RETURN, *PAPI_TRACE_SET_IDLE_MODE_RETURN;
MgslSetParameters call. If the pointer to the parameters structure is valid then the contents of the parameters structure is also logged, otherwise the Params member is undefined.
EventData
typedef struct _API_TRACE_SET_PARAMS_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PMGSL_PARAMS pParams;
MGSL_PARAMS Params;
} API_TRACE_SET_PARAMS_CALL, *PAPI_TRACE_SET_PARAMS_CALL;
MgslSetParameters return.
EventData
typedef struct _API_TRACE_SET_PARAMS_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_SET_PARAMS_RETURN, *PAPI_TRACE_SET_PARAMS_RETURN;
MgslSetSerialSignals call.
EventData
typedef struct _API_TRACE_SET_SERIAL_SIGNALS_CALL
{
ULONG ProcessId;
ULONG ThreadId;
UCHAR SerialSignals;
} API_TRACE_SET_SERIAL_SIGNALS_CALL, *PAPI_TRACE_SET_SERIAL_SIGNALS_CALL;
MgslSetSerialSignals return.
EventData
typedef struct API_TRACE_SET_SERIAL_SIGNALS_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_SET_SERIAL_SIGNALS_RETURN, *PAPI_TRACE_SET_SERIAL_SIGNALS_RETURN;
MgslSetTraceLevel call.
EventData
typedef struct API_TRACE_SET_TRACE_LEVEL_CALL
{
ULONG ProcessId;
ULONG ThreadId;
ULONG TraceLevel;
} API_TRACE_SET_TRACE_LEVEL_CALL, *PAPI_TRACE_SET_TRACE_LEVEL_CALL;
MgslSetTraceLevel return.
EventData
typedef struct API_TRACE_SET_TRACE_LEVEL_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
} API_TRACE_SET_TRACE_LEVEL_RETURN, *PAPI_TRACE_SET_TRACE_LEVEL_RETURN;
MgslTransmit call. The contents of the transmit buffer are not recorded in this event. The data will appear in a DataEvent_TransmitData event if data tracing is enabled.
EventData
typedef struct _API_TRACE_TRANSMIT_CALL
{
ULONG ProcessId;
ULONG ThreadId;
PUCHAR pBuffer;
ULONG BufferSize;
PULONG pStatus;
LPOVERLAPPED pOverlapped;
} API_TRACE_TRANSMIT_CALL, *PAPI_TRACE_TRANSMIT_CALL;
A pending call to MgslTransmit has completed.
EventData
ULONG Returned transmit status
MgslTransmit return.
EventData
typedef struct _API_TRACE_TRANSMIT_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
ULONG Status;
} API_TRACE_TRANSMIT_RETURN, *PAPI_TRACE_TRANSMIT_RETURN;
MgslWaitEvent call.
EventData
typedef struct _API_TRACE_WAIT_EVENT_CALL
{
ULONG ProcessId;
ULONG ThreadId;
ULONG EventMask;
PULONG pEvents;
LPOVERLAPPED pOverlapped;
} API_TRACE_WAIT_EVENT_CALL, *PAPI_TRACE_WAIT_EVENT_CALL;
A pending call to MgslWaitEvent has completed.
EventData
ULONG Returned Events
Wait for serial signal event return
EventData
typedef struct _API_TRACE_WAIT_EVENT_RETURN
{
ULONG ProcessId;
ULONG ThreadId;
ULONG ReturnCode;
ULONG Events;
} API_TRACE_WAIT_EVENT_RETURN, *PAPI_TRACE_WAIT_EVENT_RETURN;
| Previous | Contents | Next |