rpcrt4: Implement MesBufferHandleReset().
This commit is contained in:
parent
cc95915a3c
commit
d240fdff18
|
@ -123,6 +123,40 @@ RPC_STATUS WINAPI MesIncrementalHandleReset(
|
|||
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;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* MesHandleFree [RPCRT4.@]
|
||||
*/
|
||||
|
|
|
@ -96,7 +96,7 @@
|
|||
@ stub I_UuidCreate
|
||||
@ stub MIDL_wchar_strcpy
|
||||
@ stub MIDL_wchar_strlen
|
||||
@ stub MesBufferHandleReset
|
||||
@ stdcall MesBufferHandleReset(ptr long long ptr long ptr)
|
||||
@ stdcall MesDecodeBufferHandleCreate(ptr long ptr)
|
||||
@ stdcall MesDecodeIncrementalHandleCreate(ptr ptr ptr)
|
||||
@ stdcall MesEncodeDynBufferHandleCreate(ptr ptr ptr)
|
||||
|
|
|
@ -2437,6 +2437,28 @@ if (status == RPC_S_OK)
|
|||
status = MesEncodeFixedBufferHandleCreate(buffer, 32, &encoded_size, &handle);
|
||||
ok(status == RPC_S_OK, "got %d\n", status);
|
||||
|
||||
status = MesBufferHandleReset(NULL, MES_DYNAMIC_BUFFER_HANDLE, MES_ENCODE,
|
||||
&buffer, 32, &encoded_size);
|
||||
ok(status == RPC_S_INVALID_ARG, "got %d\n", status);
|
||||
|
||||
/* convert to dynamic buffer handle */
|
||||
status = MesBufferHandleReset(handle, MES_DYNAMIC_BUFFER_HANDLE, MES_ENCODE,
|
||||
&buffer, 32, &encoded_size);
|
||||
ok(status == RPC_S_OK, "got %d\n", status);
|
||||
|
||||
status = MesBufferHandleReset(handle, MES_DYNAMIC_BUFFER_HANDLE, MES_ENCODE,
|
||||
NULL, 32, &encoded_size);
|
||||
ok(status == RPC_S_INVALID_ARG, "got %d\n", status);
|
||||
|
||||
status = MesBufferHandleReset(handle, MES_DYNAMIC_BUFFER_HANDLE, MES_ENCODE,
|
||||
&buffer, 32, NULL);
|
||||
ok(status == RPC_S_INVALID_ARG, "got %d\n", status);
|
||||
|
||||
/* invalid handle type */
|
||||
status = MesBufferHandleReset(handle, MES_DYNAMIC_BUFFER_HANDLE+1, MES_ENCODE,
|
||||
&buffer, 32, &encoded_size);
|
||||
ok(status == RPC_S_INVALID_ARG, "got %d\n", status);
|
||||
|
||||
status = MesHandleFree(handle);
|
||||
ok(status == RPC_S_OK, "got %d\n", status);
|
||||
}
|
||||
|
|
|
@ -30,7 +30,8 @@ extern "C" {
|
|||
typedef enum
|
||||
{
|
||||
MES_ENCODE,
|
||||
MES_DECODE
|
||||
MES_DECODE,
|
||||
MES_ENCODE_NDR64
|
||||
} MIDL_ES_CODE;
|
||||
|
||||
typedef enum
|
||||
|
|
Loading…
Reference in New Issue