Transaction buffers are used to track many operations through the service, whether a simple send, a send-RSVP or certain receive operations. If a send-RSVP operation is initiated, the transaction buffer remains until the associated response message has been received and delivered to the port.
typedef struct tagTransaction {
    LPVOID lpOutQlink;                WORD _reserved_1;
    LPVOID lpInQLink;                 WORD _reserved_2;
    BYTE byTransCntr;
    BYTE byTransID;
    WORD _reserved;
    WORD wFlags;
    WORD wState;
    RTHANDLE hPort;
    RTHANDLE hThread;
    LPVOID lpMsg;                     WORD _reserved_3;
    WORD wSendStatus;
    LPCONTROLBUFFER lpInControlMsg;   WORD _reserved_4;
    LPCONTROLBUFFER lpOutControlMsg;  WORD _reserved_5;
    DWORD cbDataLength;
    LPVOID lpData;                    WORD _reserved_6;
    DWORD cbRSVPLength;
    LPVOID lpRSVPData;                WORD _reserved_7;
    LPVOID lpOrgRSVPData;             WORD _reserved_8;
    DWORD dwFragOffset;
    WORD wFragBlock;
    GENADDR RemoteHost;
} TRANSACTION, *LPTRANSACTION;
wFlags 
wState 
lpOutControlMsg 
hPort | 
Contains the caller's port handle field (source port ID). | 
wLocalTransID | 
Contains the ID of the transaction structure allocated. | 
byControl | 
Contains the caller's control message. | 
cbDataLength 
dwDataLength field, the number of bytes in the data message. If there is no data message then this field will contain 0 (zero). 
lpData 
wFlags field. If there is no data message then this field will contain NULL. 
cbRSVPDataLength 
pRSVPDataLength, the size of the RSVP buffer. Otherwise this field will contain 0 (zero). 
lpRSVPData 
pRSVPData, pointing to the RSVP buffer. Otherwise this field contains NULL. 
dwFragOffset, wFragBlock 
RemoteHost 
SendMessage, SendRtMessageRSVP