/*********************************************************************** * MesDecodeBufferHandleCreate [RPCRT4.@] */ RPC_STATUS RPC_ENTRY MesDecodeBufferHandleCreate( char *Buffer, ULONG BufferSize, handle_t *pHandle) { MIDL_ES_MESSAGE *pEsMsg; RPC_STATUS status; TRACE("(%p, %d, %p)\n", Buffer, BufferSize, pHandle); if ((status = validate_mes_buffer_pointer(Buffer))) return status; pEsMsg = HeapAlloc(GetProcessHeap(), 0, sizeof(*pEsMsg)); if (!pEsMsg) return RPC_S_OUT_OF_MEMORY; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = MES_DECODE; pEsMsg->HandleStyle = MES_FIXED_BUFFER_HANDLE; pEsMsg->Buffer = (unsigned char *)Buffer; pEsMsg->BufferSize = BufferSize; *pHandle = (handle_t)pEsMsg; return RPC_S_OK; }
/*********************************************************************** * MesEncodeDynBufferHandleCreate [RPCRT4.@] */ RPC_STATUS RPC_ENTRY MesEncodeDynBufferHandleCreate(char **Buffer, ULONG *pEncodedSize, handle_t *pHandle) { MIDL_ES_MESSAGE *pEsMsg; TRACE("(%p, %p, %p)\n", Buffer, pEncodedSize, pHandle); if (!pEncodedSize) return RPC_S_INVALID_ARG; pEsMsg = HeapAlloc(GetProcessHeap(), 0, sizeof(*pEsMsg)); if (!pEsMsg) return RPC_S_OUT_OF_MEMORY; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = MES_ENCODE; pEsMsg->HandleStyle = MES_DYNAMIC_BUFFER_HANDLE; pEsMsg->pDynBuffer = (unsigned char **)Buffer; pEsMsg->pEncodedSize = pEncodedSize; *pHandle = (handle_t)pEsMsg; return RPC_S_OK; }
/*********************************************************************** * MesBufferHandleReset [RPCRT4.@] */ RPC_STATUS WINAPI MesBufferHandleReset(handle_t Handle, ULONG HandleStyle, MIDL_ES_CODE Operation, char **Buffer, ULONG BufferSize, ULONG *EncodedSize) { MIDL_ES_MESSAGE *pEsMsg = (MIDL_ES_MESSAGE *)Handle; TRACE("(%p, %u, %d, %p, %u, %p)\n", Handle, HandleStyle, Operation, Buffer, BufferSize, EncodedSize); if (!Handle || !Buffer || !EncodedSize) return RPC_S_INVALID_ARG; if (Operation != MES_ENCODE && Operation != MES_DECODE && Operation != MES_ENCODE_NDR64) return RPC_S_INVALID_ARG; if (HandleStyle != MES_FIXED_BUFFER_HANDLE && HandleStyle != MES_DYNAMIC_BUFFER_HANDLE) return RPC_S_INVALID_ARG; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = Operation; pEsMsg->HandleStyle = HandleStyle; if (HandleStyle == MES_FIXED_BUFFER_HANDLE) pEsMsg->Buffer = (unsigned char*)*Buffer; else pEsMsg->pDynBuffer = (unsigned char**)Buffer; pEsMsg->BufferSize = BufferSize; pEsMsg->pEncodedSize = EncodedSize; return RPC_S_OK; }
/*********************************************************************** * MesIncrementalHandleReset [RPCRT4.@] */ RPC_STATUS WINAPI MesIncrementalHandleReset( handle_t Handle, void *UserState, MIDL_ES_ALLOC AllocFn, MIDL_ES_WRITE WriteFn, MIDL_ES_READ ReadFn, MIDL_ES_CODE Operation) { MIDL_ES_MESSAGE *pEsMsg = Handle; TRACE("(%p, %p, %p, %p, %p, %d)\n", Handle, UserState, AllocFn, WriteFn, ReadFn, Operation); init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = Operation; pEsMsg->UserState = UserState; pEsMsg->HandleStyle = MES_INCREMENTAL_HANDLE; pEsMsg->Alloc = AllocFn; pEsMsg->Write = WriteFn; pEsMsg->Read = ReadFn; return RPC_S_OK; }
/*********************************************************************** * MesDecodeIncrementalHandleCreate [RPCRT4.@] */ RPC_STATUS WINAPI MesDecodeIncrementalHandleCreate( void *UserState, MIDL_ES_READ ReadFn, handle_t *pHandle) { MIDL_ES_MESSAGE *pEsMsg; TRACE("(%p, %p, %p)\n", UserState, ReadFn, pHandle); pEsMsg = HeapAlloc(GetProcessHeap(), 0, sizeof(*pEsMsg)); if (!pEsMsg) return ERROR_OUTOFMEMORY; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = MES_DECODE; pEsMsg->UserState = UserState; pEsMsg->HandleStyle = MES_INCREMENTAL_HANDLE; pEsMsg->Read = ReadFn; *pHandle = (handle_t)pEsMsg; return RPC_S_OK; }
/*********************************************************************** * MesEncodeFixedBufferHandleCreate [RPCRT4.@] */ RPC_STATUS RPC_ENTRY MesEncodeFixedBufferHandleCreate( char *Buffer, ULONG BufferSize, ULONG *pEncodedSize, handle_t *pHandle) { MIDL_ES_MESSAGE *pEsMsg; TRACE("(%p, %d, %p, %p)\n", Buffer, BufferSize, pEncodedSize, pHandle); pEsMsg = HeapAlloc(GetProcessHeap(), 0, sizeof(*pEsMsg)); if (!pEsMsg) return ERROR_OUTOFMEMORY; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = MES_ENCODE; pEsMsg->HandleStyle = MES_FIXED_BUFFER_HANDLE; pEsMsg->Buffer = (unsigned char *)Buffer; pEsMsg->BufferSize = BufferSize; pEsMsg->pEncodedSize = pEncodedSize; *pHandle = (handle_t)pEsMsg; return RPC_S_OK; }
/*********************************************************************** * MesEncodeIncrementalHandleCreate [RPCRT4.@] */ RPC_STATUS WINAPI MesEncodeIncrementalHandleCreate( void *UserState, MIDL_ES_ALLOC AllocFn, MIDL_ES_WRITE WriteFn, handle_t *pHandle) { MIDL_ES_MESSAGE *pEsMsg; TRACE("(%p, %p, %p, %p)\n", UserState, AllocFn, WriteFn, pHandle); pEsMsg = HeapAlloc(GetProcessHeap(), 0, sizeof(*pEsMsg)); if (!pEsMsg) return ERROR_OUTOFMEMORY; init_MIDL_ES_MESSAGE(pEsMsg); pEsMsg->Operation = MES_ENCODE; pEsMsg->UserState = UserState; pEsMsg->HandleStyle = MES_INCREMENTAL_HANDLE; pEsMsg->Alloc = AllocFn; pEsMsg->Write = WriteFn; *pHandle = (handle_t)pEsMsg; return RPC_S_OK; }