4 * Copyright 2004 Filip Navara
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #ifndef __WINE_RPC_MESSAGE_H
22 #define __WINE_RPC_MESSAGE_H
26 typedef unsigned int NCA_STATUS
;
28 RpcPktHdr
*RPCRT4_BuildFaultHeader(ULONG DataRepresentation
, RPC_STATUS Status
);
29 RpcPktHdr
*RPCRT4_BuildResponseHeader(ULONG DataRepresentation
, ULONG BufferLength
);
30 RpcPktHdr
*RPCRT4_BuildBindHeader(ULONG DataRepresentation
, unsigned short MaxTransmissionSize
, unsigned short MaxReceiveSize
, ULONG AssocGroupId
, const RPC_SYNTAX_IDENTIFIER
*AbstractId
, const RPC_SYNTAX_IDENTIFIER
*TransferId
);
31 RpcPktHdr
*RPCRT4_BuildBindNackHeader(ULONG DataRepresentation
, unsigned char RpcVersion
, unsigned char RpcVersionMinor
);
32 RpcPktHdr
*RPCRT4_BuildBindAckHeader(ULONG DataRepresentation
, unsigned short MaxTransmissionSize
, unsigned short MaxReceiveSize
, ULONG AssocGroupId
, LPCSTR ServerAddress
, unsigned short Result
, unsigned short Reason
, const RPC_SYNTAX_IDENTIFIER
*TransferId
);
33 RpcPktHdr
*RPCRT4_BuildHttpHeader(ULONG DataRepresentation
, unsigned short flags
, unsigned short num_data_items
, unsigned int payload_size
);
34 RpcPktHdr
*RPCRT4_BuildHttpConnectHeader(unsigned short flags
, int out_pipe
, const UUID
*connection_uuid
, const UUID
*pipe_uuid
, const UUID
*association_uuid
);
35 RpcPktHdr
*RPCRT4_BuildHttpFlowControlHeader(BOOL server
, ULONG bytes_transmitted
, ULONG flow_control_increment
, const UUID
*pipe_uuid
);
36 VOID
RPCRT4_FreeHeader(RpcPktHdr
*Header
);
37 RPC_STATUS
RPCRT4_Send(RpcConnection
*Connection
, RpcPktHdr
*Header
, void *Buffer
, unsigned int BufferLength
);
38 RPC_STATUS
RPCRT4_Receive(RpcConnection
*Connection
, RpcPktHdr
**Header
, PRPC_MESSAGE pMsg
);
39 RPC_STATUS
RPCRT4_ReceiveWithAuth(RpcConnection
*Connection
, RpcPktHdr
**Header
, PRPC_MESSAGE pMsg
, unsigned char **auth_data_out
, ULONG
*auth_length_out
);
40 DWORD
RPCRT4_GetHeaderSize(const RpcPktHdr
*Header
);
41 RPC_STATUS
RPCRT4_ValidateCommonHeader(const RpcPktCommonHdr
*hdr
);
43 BOOL
RPCRT4_IsValidHttpPacket(RpcPktHdr
*hdr
, unsigned char *data
, unsigned short data_len
);
44 RPC_STATUS
RPCRT4_ParseHttpPrepareHeader1(RpcPktHdr
*header
, unsigned char *data
, ULONG
*field1
);
45 RPC_STATUS
RPCRT4_ParseHttpPrepareHeader2(RpcPktHdr
*header
, unsigned char *data
, ULONG
*field1
, ULONG
*bytes_until_next_packet
, ULONG
*field3
);
46 RPC_STATUS
RPCRT4_ParseHttpFlowControlHeader(RpcPktHdr
*header
, unsigned char *data
, BOOL server
, ULONG
*bytes_transmitted
, ULONG
*flow_control_increment
, UUID
*pipe_uuid
);
47 NCA_STATUS
RPC2NCA_STATUS(RPC_STATUS status
);
48 RPC_STATUS
RPCRT4_AuthorizeConnection(RpcConnection
* conn
, BYTE
*challenge
, ULONG count
);