mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 07:23:13 +00:00
sync oleaut32 to wine 1.1.14
sync rpcrt4 to wine 1.1.14 except UuidCreate in rpcrt4_main.c as it isn't compatible to our headers svn path=/trunk/; revision=39450
This commit is contained in:
parent
e751a0cbb0
commit
464363fadc
14 changed files with 158 additions and 84 deletions
|
@ -510,7 +510,7 @@ ULONG WINAPI LHashValOfNameSysA( SYSKIND skind, LCID lcid, LPCSTR lpStr)
|
||||||
ULONG nHiWord, nLoWord = 0x0deadbee;
|
ULONG nHiWord, nLoWord = 0x0deadbee;
|
||||||
const unsigned char *str = (const unsigned char *)lpStr, *pnLookup = NULL;
|
const unsigned char *str = (const unsigned char *)lpStr, *pnLookup = NULL;
|
||||||
|
|
||||||
TRACE("(%d, %d, %s) %s\n", skind, lcid, debugstr_a(lpStr),
|
TRACE("(%d, 0x%x, %s) %s\n", skind, lcid, debugstr_a(lpStr),
|
||||||
(skind == SYS_WIN16) ? "SYS_WIN16" : (skind == SYS_WIN32) ? "SYS_WIN32" : "");
|
(skind == SYS_WIN16) ? "SYS_WIN16" : (skind == SYS_WIN32) ? "SYS_WIN32" : "");
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
|
|
|
@ -710,17 +710,27 @@ static HRESULT WINAPI OLEPictureImpl_Render(IPicture *iface, HDC hdc,
|
||||||
|
|
||||||
case PICTYPE_METAFILE:
|
case PICTYPE_METAFILE:
|
||||||
{
|
{
|
||||||
POINT prevOrg;
|
POINT prevOrg, prevWndOrg;
|
||||||
SIZE prevExt;
|
SIZE prevExt, prevWndExt;
|
||||||
int oldmode;
|
int oldmode;
|
||||||
|
|
||||||
|
/* Render the WMF to the appropriate location by setting the
|
||||||
|
appropriate ratio between "device units" and "logical units" */
|
||||||
oldmode = SetMapMode(hdc, MM_ANISOTROPIC);
|
oldmode = SetMapMode(hdc, MM_ANISOTROPIC);
|
||||||
|
/* For the "source rectangle" the y-axis must be inverted */
|
||||||
|
SetWindowOrgEx(hdc, xSrc, This->himetricHeight-ySrc, &prevWndOrg);
|
||||||
|
SetWindowExtEx(hdc, cxSrc, -cySrc, &prevWndExt);
|
||||||
|
/* For the "destination rectangle" no inversion is necessary */
|
||||||
SetViewportOrgEx(hdc, x, y, &prevOrg);
|
SetViewportOrgEx(hdc, x, y, &prevOrg);
|
||||||
SetViewportExtEx(hdc, cx, cy, &prevExt);
|
SetViewportExtEx(hdc, cx, cy, &prevExt);
|
||||||
|
|
||||||
if (!PlayMetaFile(hdc, This->desc.u.wmf.hmeta))
|
if (!PlayMetaFile(hdc, This->desc.u.wmf.hmeta))
|
||||||
ERR("PlayMetaFile failed!\n");
|
ERR("PlayMetaFile failed!\n");
|
||||||
|
|
||||||
|
/* We're done, restore the DC to the previous settings for converting
|
||||||
|
logical units to device units */
|
||||||
|
SetWindowExtEx(hdc, prevWndExt.cx, prevWndExt.cy, NULL);
|
||||||
|
SetWindowOrgEx(hdc, prevWndOrg.x, prevWndOrg.y, NULL);
|
||||||
SetViewportExtEx(hdc, prevExt.cx, prevExt.cy, NULL);
|
SetViewportExtEx(hdc, prevExt.cx, prevExt.cy, NULL);
|
||||||
SetViewportOrgEx(hdc, prevOrg.x, prevOrg.y, NULL);
|
SetViewportOrgEx(hdc, prevOrg.x, prevOrg.y, NULL);
|
||||||
SetMapMode(hdc, oldmode);
|
SetMapMode(hdc, oldmode);
|
||||||
|
|
|
@ -606,10 +606,15 @@ serialize_param(
|
||||||
marshal_state *buf)
|
marshal_state *buf)
|
||||||
{
|
{
|
||||||
HRESULT hres = S_OK;
|
HRESULT hres = S_OK;
|
||||||
|
VARTYPE vartype;
|
||||||
|
|
||||||
TRACE("(tdesc.vt %s)\n",debugstr_vt(tdesc->vt));
|
TRACE("(tdesc.vt %s)\n",debugstr_vt(tdesc->vt));
|
||||||
|
|
||||||
switch (tdesc->vt) {
|
vartype = tdesc->vt;
|
||||||
|
if ((vartype & 0xf000) == VT_ARRAY)
|
||||||
|
vartype = VT_SAFEARRAY;
|
||||||
|
|
||||||
|
switch (vartype) {
|
||||||
case VT_EMPTY: /* nothing. empty variant for instance */
|
case VT_EMPTY: /* nothing. empty variant for instance */
|
||||||
return S_OK;
|
return S_OK;
|
||||||
case VT_I8:
|
case VT_I8:
|
||||||
|
@ -919,11 +924,16 @@ deserialize_param(
|
||||||
marshal_state *buf)
|
marshal_state *buf)
|
||||||
{
|
{
|
||||||
HRESULT hres = S_OK;
|
HRESULT hres = S_OK;
|
||||||
|
VARTYPE vartype;
|
||||||
|
|
||||||
TRACE("vt %s at %p\n",debugstr_vt(tdesc->vt),arg);
|
TRACE("vt %s at %p\n",debugstr_vt(tdesc->vt),arg);
|
||||||
|
|
||||||
|
vartype = tdesc->vt;
|
||||||
|
if ((vartype & 0xf000) == VT_ARRAY)
|
||||||
|
vartype = VT_SAFEARRAY;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
switch (tdesc->vt) {
|
switch (vartype) {
|
||||||
case VT_EMPTY:
|
case VT_EMPTY:
|
||||||
if (debugout) TRACE_(olerelay)("<empty>\n");
|
if (debugout) TRACE_(olerelay)("<empty>\n");
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -1887,7 +1887,7 @@ MSFT_DoFuncs(TLBContext* pcx,
|
||||||
(*pptfd)->funcdesc.callconv = (pFuncRec->FKCCIC) >> 8 & 0xF;
|
(*pptfd)->funcdesc.callconv = (pFuncRec->FKCCIC) >> 8 & 0xF;
|
||||||
(*pptfd)->funcdesc.cParams = pFuncRec->nrargs ;
|
(*pptfd)->funcdesc.cParams = pFuncRec->nrargs ;
|
||||||
(*pptfd)->funcdesc.cParamsOpt = pFuncRec->nroargs ;
|
(*pptfd)->funcdesc.cParamsOpt = pFuncRec->nroargs ;
|
||||||
(*pptfd)->funcdesc.oVft = pFuncRec->VtableOffset ;
|
(*pptfd)->funcdesc.oVft = (pFuncRec->VtableOffset * sizeof(void *))/4;
|
||||||
(*pptfd)->funcdesc.wFuncFlags = LOWORD(pFuncRec->Flags) ;
|
(*pptfd)->funcdesc.wFuncFlags = LOWORD(pFuncRec->Flags) ;
|
||||||
|
|
||||||
MSFT_GetTdesc(pcx,
|
MSFT_GetTdesc(pcx,
|
||||||
|
@ -2146,7 +2146,7 @@ static ITypeInfoImpl * MSFT_DoTypeInfo(
|
||||||
ptiRet->TypeAttr.wMajorVerNum=LOWORD(tiBase.version);
|
ptiRet->TypeAttr.wMajorVerNum=LOWORD(tiBase.version);
|
||||||
ptiRet->TypeAttr.wMinorVerNum=HIWORD(tiBase.version);
|
ptiRet->TypeAttr.wMinorVerNum=HIWORD(tiBase.version);
|
||||||
ptiRet->TypeAttr.cImplTypes=tiBase.cImplTypes;
|
ptiRet->TypeAttr.cImplTypes=tiBase.cImplTypes;
|
||||||
ptiRet->TypeAttr.cbSizeVft=tiBase.cbSizeVft; /* FIXME: this is only the non inherited part */
|
ptiRet->TypeAttr.cbSizeVft=(tiBase.cbSizeVft * sizeof(void *))/4; /* FIXME: this is only the non inherited part */
|
||||||
if(ptiRet->TypeAttr.typekind == TKIND_ALIAS)
|
if(ptiRet->TypeAttr.typekind == TKIND_ALIAS)
|
||||||
MSFT_GetTdesc(pcx, tiBase.datatype1,
|
MSFT_GetTdesc(pcx, tiBase.datatype1,
|
||||||
&ptiRet->TypeAttr.tdescAlias, ptiRet);
|
&ptiRet->TypeAttr.tdescAlias, ptiRet);
|
||||||
|
@ -3908,7 +3908,7 @@ static ITypeLib2* ITypeLib2_Constructor_SLTG(LPVOID pLib, DWORD dwTLBLength)
|
||||||
|
|
||||||
(*ppTypeInfoImpl)->TypeAttr.cbAlignment = pTITail->cbAlignment;
|
(*ppTypeInfoImpl)->TypeAttr.cbAlignment = pTITail->cbAlignment;
|
||||||
(*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance;
|
(*ppTypeInfoImpl)->TypeAttr.cbSizeInstance = pTITail->cbSizeInstance;
|
||||||
(*ppTypeInfoImpl)->TypeAttr.cbSizeVft = pTITail->cbSizeVft;
|
(*ppTypeInfoImpl)->TypeAttr.cbSizeVft = (pTITail->cbSizeVft * sizeof(void *))/4;
|
||||||
|
|
||||||
switch(pTIHeader->typekind) {
|
switch(pTIHeader->typekind) {
|
||||||
case TKIND_ENUM:
|
case TKIND_ENUM:
|
||||||
|
@ -4981,9 +4981,9 @@ static HRESULT WINAPI ITypeInfo_fnGetTypeAttr( ITypeInfo2 *iface,
|
||||||
&This->TypeAttr.tdescAlias, (void *)(*ppTypeAttr + 1));
|
&This->TypeAttr.tdescAlias, (void *)(*ppTypeAttr + 1));
|
||||||
|
|
||||||
if((*ppTypeAttr)->typekind == TKIND_DISPATCH) {
|
if((*ppTypeAttr)->typekind == TKIND_DISPATCH) {
|
||||||
(*ppTypeAttr)->cFuncs = (*ppTypeAttr)->cbSizeVft / 4; /* This should include all the inherited
|
/* This should include all the inherited funcs */
|
||||||
funcs */
|
(*ppTypeAttr)->cFuncs = (*ppTypeAttr)->cbSizeVft / sizeof(void *);
|
||||||
(*ppTypeAttr)->cbSizeVft = 28; /* This is always the size of IDispatch's vtbl */
|
(*ppTypeAttr)->cbSizeVft = 7 * sizeof(void *); /* This is always the size of IDispatch's vtbl */
|
||||||
(*ppTypeAttr)->wTypeFlags &= ~TYPEFLAG_FOLEAUTOMATION;
|
(*ppTypeAttr)->wTypeFlags &= ~TYPEFLAG_FOLEAUTOMATION;
|
||||||
}
|
}
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -122,6 +122,13 @@ static unsigned char *WINAPI NdrContextHandleMarshall(PMIDL_STUB_MESSAGE, unsign
|
||||||
static void WINAPI NdrContextHandleBufferSize(PMIDL_STUB_MESSAGE, unsigned char *, PFORMAT_STRING);
|
static void WINAPI NdrContextHandleBufferSize(PMIDL_STUB_MESSAGE, unsigned char *, PFORMAT_STRING);
|
||||||
static unsigned char *WINAPI NdrContextHandleUnmarshall(PMIDL_STUB_MESSAGE, unsigned char **, PFORMAT_STRING, unsigned char);
|
static unsigned char *WINAPI NdrContextHandleUnmarshall(PMIDL_STUB_MESSAGE, unsigned char **, PFORMAT_STRING, unsigned char);
|
||||||
|
|
||||||
|
static unsigned char *WINAPI NdrRangeMarshall(PMIDL_STUB_MESSAGE,unsigned char *, PFORMAT_STRING);
|
||||||
|
static void WINAPI NdrRangeBufferSize(PMIDL_STUB_MESSAGE, unsigned char *, PFORMAT_STRING);
|
||||||
|
static ULONG WINAPI NdrRangeMemorySize(PMIDL_STUB_MESSAGE, PFORMAT_STRING);
|
||||||
|
static void WINAPI NdrRangeFree(PMIDL_STUB_MESSAGE, unsigned char *, PFORMAT_STRING);
|
||||||
|
|
||||||
|
static ULONG WINAPI NdrByteCountPointerMemorySize(PMIDL_STUB_MESSAGE, PFORMAT_STRING);
|
||||||
|
|
||||||
const NDR_MARSHALL NdrMarshaller[NDR_TABLE_SIZE] = {
|
const NDR_MARSHALL NdrMarshaller[NDR_TABLE_SIZE] = {
|
||||||
0,
|
0,
|
||||||
NdrBaseTypeMarshall, NdrBaseTypeMarshall, NdrBaseTypeMarshall,
|
NdrBaseTypeMarshall, NdrBaseTypeMarshall, NdrBaseTypeMarshall,
|
||||||
|
@ -3141,11 +3148,9 @@ static unsigned long ComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
}
|
}
|
||||||
case RPC_FC_ALIGNM4:
|
case RPC_FC_ALIGNM4:
|
||||||
ALIGN_LENGTH(size, 4);
|
ALIGN_LENGTH(size, 4);
|
||||||
ALIGN_POINTER(pStubMsg->Buffer, 4);
|
|
||||||
break;
|
break;
|
||||||
case RPC_FC_ALIGNM8:
|
case RPC_FC_ALIGNM8:
|
||||||
ALIGN_LENGTH(size, 8);
|
ALIGN_LENGTH(size, 8);
|
||||||
ALIGN_POINTER(pStubMsg->Buffer, 8);
|
|
||||||
break;
|
break;
|
||||||
case RPC_FC_STRUCTPAD1:
|
case RPC_FC_STRUCTPAD1:
|
||||||
case RPC_FC_STRUCTPAD2:
|
case RPC_FC_STRUCTPAD2:
|
||||||
|
@ -4330,6 +4335,56 @@ void WINAPI NdrUserMarshalFree(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
&umcb.Flags, pMemory);
|
&umcb.Flags, pMemory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* NdrGetUserMarshalInfo [RPCRT4.@]
|
||||||
|
*/
|
||||||
|
RPC_STATUS RPC_ENTRY NdrGetUserMarshalInfo(ULONG *flags, ULONG level, NDR_USER_MARSHAL_INFO *umi)
|
||||||
|
{
|
||||||
|
USER_MARSHAL_CB *umcb = CONTAINING_RECORD(flags, USER_MARSHAL_CB, Flags);
|
||||||
|
|
||||||
|
TRACE("(%p,%u,%p)\n", flags, level, umi);
|
||||||
|
|
||||||
|
if (level != 1)
|
||||||
|
return RPC_S_INVALID_ARG;
|
||||||
|
|
||||||
|
memset(&umi->Level1, 0, sizeof(umi->Level1));
|
||||||
|
umi->InformationLevel = level;
|
||||||
|
|
||||||
|
if (umcb->Signature != USER_MARSHAL_CB_SIGNATURE)
|
||||||
|
return RPC_S_INVALID_ARG;
|
||||||
|
|
||||||
|
umi->Level1.pfnAllocate = umcb->pStubMsg->pfnAllocate;
|
||||||
|
umi->Level1.pfnFree = umcb->pStubMsg->pfnFree;
|
||||||
|
umi->Level1.pRpcChannelBuffer = umcb->pStubMsg->pRpcChannelBuffer;
|
||||||
|
|
||||||
|
switch (umcb->CBType)
|
||||||
|
{
|
||||||
|
case USER_MARSHAL_CB_MARSHALL:
|
||||||
|
case USER_MARSHAL_CB_UNMARSHALL:
|
||||||
|
{
|
||||||
|
RPC_MESSAGE *msg = umcb->pStubMsg->RpcMsg;
|
||||||
|
unsigned char *buffer_start = msg->Buffer;
|
||||||
|
unsigned char *buffer_end =
|
||||||
|
(unsigned char *)msg->Buffer + msg->BufferLength;
|
||||||
|
|
||||||
|
if (umcb->pStubMsg->Buffer < buffer_start ||
|
||||||
|
umcb->pStubMsg->Buffer > buffer_end)
|
||||||
|
return ERROR_INVALID_USER_BUFFER;
|
||||||
|
|
||||||
|
umi->Level1.Buffer = umcb->pStubMsg->Buffer;
|
||||||
|
umi->Level1.BufferSize = buffer_end - umcb->pStubMsg->Buffer;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case USER_MARSHAL_CB_BUFFER_SIZE:
|
||||||
|
case USER_MARSHAL_CB_FREE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
WARN("unrecognised CBType %d\n", umcb->CBType);
|
||||||
|
}
|
||||||
|
|
||||||
|
return RPC_S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrClearOutParameters [RPCRT4.@]
|
* NdrClearOutParameters [RPCRT4.@]
|
||||||
*/
|
*/
|
||||||
|
@ -6002,10 +6057,10 @@ void WINAPI NdrByteCountPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrByteCountPointerMemorySize [RPCRT4.@]
|
* NdrByteCountPointerMemorySize [internal]
|
||||||
*/
|
*/
|
||||||
ULONG WINAPI NdrByteCountPointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
|
static ULONG WINAPI NdrByteCountPointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
PFORMAT_STRING pFormat)
|
PFORMAT_STRING pFormat)
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
FIXME("stub\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -6077,7 +6132,7 @@ void WINAPI NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrRangeMarshall [internal]
|
* NdrRangeMarshall [internal]
|
||||||
*/
|
*/
|
||||||
unsigned char *WINAPI NdrRangeMarshall(
|
static unsigned char *WINAPI NdrRangeMarshall(
|
||||||
PMIDL_STUB_MESSAGE pStubMsg,
|
PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
unsigned char *pMemory,
|
unsigned char *pMemory,
|
||||||
PFORMAT_STRING pFormat)
|
PFORMAT_STRING pFormat)
|
||||||
|
@ -6100,7 +6155,7 @@ unsigned char *WINAPI NdrRangeMarshall(
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrRangeUnmarshall
|
* NdrRangeUnmarshall [RPCRT4.@]
|
||||||
*/
|
*/
|
||||||
unsigned char *WINAPI NdrRangeUnmarshall(
|
unsigned char *WINAPI NdrRangeUnmarshall(
|
||||||
PMIDL_STUB_MESSAGE pStubMsg,
|
PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
|
@ -6200,7 +6255,7 @@ unsigned char *WINAPI NdrRangeUnmarshall(
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrRangeBufferSize [internal]
|
* NdrRangeBufferSize [internal]
|
||||||
*/
|
*/
|
||||||
void WINAPI NdrRangeBufferSize(
|
static void WINAPI NdrRangeBufferSize(
|
||||||
PMIDL_STUB_MESSAGE pStubMsg,
|
PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
unsigned char *pMemory,
|
unsigned char *pMemory,
|
||||||
PFORMAT_STRING pFormat)
|
PFORMAT_STRING pFormat)
|
||||||
|
@ -6223,7 +6278,7 @@ void WINAPI NdrRangeBufferSize(
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrRangeMemorySize [internal]
|
* NdrRangeMemorySize [internal]
|
||||||
*/
|
*/
|
||||||
ULONG WINAPI NdrRangeMemorySize(
|
static ULONG WINAPI NdrRangeMemorySize(
|
||||||
PMIDL_STUB_MESSAGE pStubMsg,
|
PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
PFORMAT_STRING pFormat)
|
PFORMAT_STRING pFormat)
|
||||||
{
|
{
|
||||||
|
@ -6244,7 +6299,7 @@ ULONG WINAPI NdrRangeMemorySize(
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* NdrRangeFree [internal]
|
* NdrRangeFree [internal]
|
||||||
*/
|
*/
|
||||||
void WINAPI NdrRangeFree(PMIDL_STUB_MESSAGE pStubMsg,
|
static void WINAPI NdrRangeFree(PMIDL_STUB_MESSAGE pStubMsg,
|
||||||
unsigned char *pMemory,
|
unsigned char *pMemory,
|
||||||
PFORMAT_STRING pFormat)
|
PFORMAT_STRING pFormat)
|
||||||
{
|
{
|
||||||
|
|
|
@ -583,12 +583,7 @@ LONG_PTR WINAPIV NdrClientCall2(PMIDL_STUB_DESC pStubDesc, PFORMAT_STRING pForma
|
||||||
|
|
||||||
TRACE("pStubDesc %p, pFormat %p, ...\n", pStubDesc, pFormat);
|
TRACE("pStubDesc %p, pFormat %p, ...\n", pStubDesc, pFormat);
|
||||||
|
|
||||||
/* Later NDR language versions probably won't be backwards compatible */
|
TRACE("NDR Version: 0x%x\n", pStubDesc->Version);
|
||||||
if (pStubDesc->Version > 0x50002)
|
|
||||||
{
|
|
||||||
FIXME("Incompatible stub description version: 0x%x\n", pStubDesc->Version);
|
|
||||||
RpcRaiseException(RPC_X_WRONG_STUB_VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCFLAGS)
|
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_RPCFLAGS)
|
||||||
{
|
{
|
||||||
|
@ -1293,12 +1288,7 @@ LONG WINAPI NdrStubCall2(
|
||||||
pFormat = pServerInfo->ProcString + pServerInfo->FmtStringOffset[pRpcMsg->ProcNum];
|
pFormat = pServerInfo->ProcString + pServerInfo->FmtStringOffset[pRpcMsg->ProcNum];
|
||||||
pProcHeader = (const NDR_PROC_HEADER *)&pFormat[0];
|
pProcHeader = (const NDR_PROC_HEADER *)&pFormat[0];
|
||||||
|
|
||||||
/* Later NDR language versions probably won't be backwards compatible */
|
TRACE("NDR Version: 0x%x\n", pStubDesc->Version);
|
||||||
if (pStubDesc->Version > 0x50002)
|
|
||||||
{
|
|
||||||
FIXME("Incompatible stub description version: 0x%x\n", pStubDesc->Version);
|
|
||||||
RpcRaiseException(RPC_X_WRONG_STUB_VERSION);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* create the full pointer translation tables, if requested */
|
/* create the full pointer translation tables, if requested */
|
||||||
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
|
if (pProcHeader->Oi_flags & RPC_FC_PROC_OIF_FULLPTR)
|
||||||
|
|
|
@ -139,7 +139,6 @@ RPC_STATUS RPCRT4_CreateConnection(RpcConnection** Connection, BOOL server, LPCS
|
||||||
RPC_STATUS RPCRT4_DestroyConnection(RpcConnection* Connection);
|
RPC_STATUS RPCRT4_DestroyConnection(RpcConnection* Connection);
|
||||||
RPC_STATUS RPCRT4_OpenClientConnection(RpcConnection* Connection);
|
RPC_STATUS RPCRT4_OpenClientConnection(RpcConnection* Connection);
|
||||||
RPC_STATUS RPCRT4_CloseConnection(RpcConnection* Connection);
|
RPC_STATUS RPCRT4_CloseConnection(RpcConnection* Connection);
|
||||||
RPC_STATUS RPCRT4_SpawnConnection(RpcConnection** Connection, RpcConnection* OldConnection);
|
|
||||||
|
|
||||||
RPC_STATUS RPCRT4_ResolveBinding(RpcBinding* Binding, LPCSTR Endpoint);
|
RPC_STATUS RPCRT4_ResolveBinding(RpcBinding* Binding, LPCSTR Endpoint);
|
||||||
RPC_STATUS RPCRT4_SetBindingObject(RpcBinding* Binding, const UUID* ObjectUuid);
|
RPC_STATUS RPCRT4_SetBindingObject(RpcBinding* Binding, const UUID* ObjectUuid);
|
||||||
|
|
|
@ -321,7 +321,7 @@ NCA_STATUS RPC2NCA_STATUS(RPC_STATUS status)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RPC_STATUS NCA2RPC_STATUS(NCA_STATUS status)
|
static RPC_STATUS NCA2RPC_STATUS(NCA_STATUS status)
|
||||||
{
|
{
|
||||||
switch (status)
|
switch (status)
|
||||||
{
|
{
|
||||||
|
@ -687,7 +687,7 @@ RPC_STATUS RPCRT4_Send(RpcConnection *Connection, RpcPktHdr *Header,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* validates version and frag_len fields */
|
/* validates version and frag_len fields */
|
||||||
RPC_STATUS RPCRT4_ValidateCommonHeader(const RpcPktCommonHdr *hdr)
|
static RPC_STATUS RPCRT4_ValidateCommonHeader(const RpcPktCommonHdr *hdr)
|
||||||
{
|
{
|
||||||
DWORD hdr_length;
|
DWORD hdr_length;
|
||||||
|
|
||||||
|
@ -720,7 +720,7 @@ RPC_STATUS RPCRT4_ValidateCommonHeader(const RpcPktCommonHdr *hdr)
|
||||||
*
|
*
|
||||||
* Receive a fragment from a connection.
|
* Receive a fragment from a connection.
|
||||||
*/
|
*/
|
||||||
RPC_STATUS RPCRT4_receive_fragment(RpcConnection *Connection, RpcPktHdr **Header, void **Payload)
|
static RPC_STATUS RPCRT4_receive_fragment(RpcConnection *Connection, RpcPktHdr **Header, void **Payload)
|
||||||
{
|
{
|
||||||
RPC_STATUS status;
|
RPC_STATUS status;
|
||||||
DWORD hdr_length;
|
DWORD hdr_length;
|
||||||
|
|
|
@ -35,7 +35,6 @@ RPC_STATUS RPCRT4_Send(RpcConnection *Connection, RpcPktHdr *Header, void *Buffe
|
||||||
RPC_STATUS RPCRT4_Receive(RpcConnection *Connection, RpcPktHdr **Header, PRPC_MESSAGE pMsg);
|
RPC_STATUS RPCRT4_Receive(RpcConnection *Connection, RpcPktHdr **Header, PRPC_MESSAGE pMsg);
|
||||||
RPC_STATUS RPCRT4_ReceiveWithAuth(RpcConnection *Connection, RpcPktHdr **Header, PRPC_MESSAGE pMsg, unsigned char **auth_data_out, unsigned long *auth_length_out);
|
RPC_STATUS RPCRT4_ReceiveWithAuth(RpcConnection *Connection, RpcPktHdr **Header, PRPC_MESSAGE pMsg, unsigned char **auth_data_out, unsigned long *auth_length_out);
|
||||||
NCA_STATUS RPC2NCA_STATUS(RPC_STATUS status);
|
NCA_STATUS RPC2NCA_STATUS(RPC_STATUS status);
|
||||||
RPC_STATUS NCA2RPC_STATUS(NCA_STATUS status);
|
|
||||||
RPC_STATUS RPCRT4_AuthorizeConnection(RpcConnection* conn, BYTE *challenge, ULONG count);
|
RPC_STATUS RPCRT4_AuthorizeConnection(RpcConnection* conn, BYTE *challenge, ULONG count);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -95,6 +95,8 @@
|
||||||
|
|
||||||
WINE_DEFAULT_DEBUG_CHANNEL(rpc);
|
WINE_DEFAULT_DEBUG_CHANNEL(rpc);
|
||||||
|
|
||||||
|
static RPC_STATUS RPCRT4_SpawnConnection(RpcConnection** Connection, RpcConnection* OldConnection);
|
||||||
|
|
||||||
/**** ncacn_np support ****/
|
/**** ncacn_np support ****/
|
||||||
|
|
||||||
typedef struct _RpcConnection_np
|
typedef struct _RpcConnection_np
|
||||||
|
@ -1563,8 +1565,7 @@ RPC_STATUS RPCRT4_CreateConnection(RpcConnection** Connection, BOOL server,
|
||||||
return RPC_S_OK;
|
return RPC_S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static RPC_STATUS RPCRT4_SpawnConnection(RpcConnection** Connection, RpcConnection* OldConnection)
|
||||||
RPC_STATUS RPCRT4_SpawnConnection(RpcConnection** Connection, RpcConnection* OldConnection)
|
|
||||||
{
|
{
|
||||||
RPC_STATUS err;
|
RPC_STATUS err;
|
||||||
|
|
||||||
|
|
|
@ -203,7 +203,7 @@
|
||||||
@ stub NdrGetSimpleTypeBufferSize # wxp
|
@ stub NdrGetSimpleTypeBufferSize # wxp
|
||||||
@ stub NdrGetSimpleTypeMemorySize # wxp
|
@ stub NdrGetSimpleTypeMemorySize # wxp
|
||||||
@ stub NdrGetTypeFlags # wxp
|
@ stub NdrGetTypeFlags # wxp
|
||||||
@ stub NdrGetUserMarshallInfo
|
@ stdcall NdrGetUserMarshalInfo(ptr long ptr)
|
||||||
@ stub NdrHardStructBufferSize #(ptr ptr ptr)
|
@ stub NdrHardStructBufferSize #(ptr ptr ptr)
|
||||||
@ stub NdrHardStructFree #(ptr ptr ptr)
|
@ stub NdrHardStructFree #(ptr ptr ptr)
|
||||||
@ stub NdrHardStructMarshall #(ptr ptr ptr)
|
@ stub NdrHardStructMarshall #(ptr ptr ptr)
|
||||||
|
|
|
@ -54,14 +54,14 @@ typedef RPC_BINDING_HANDLE handle_t;
|
||||||
|
|
||||||
typedef struct _RPC_BINDING_VECTOR
|
typedef struct _RPC_BINDING_VECTOR
|
||||||
{
|
{
|
||||||
unsigned long Count;
|
ULONG Count;
|
||||||
RPC_BINDING_HANDLE BindingH[1];
|
RPC_BINDING_HANDLE BindingH[1];
|
||||||
} RPC_BINDING_VECTOR;
|
} RPC_BINDING_VECTOR;
|
||||||
#define rpc_binding_vector_t RPC_BINDING_VECTOR
|
#define rpc_binding_vector_t RPC_BINDING_VECTOR
|
||||||
|
|
||||||
typedef struct _UUID_VECTOR
|
typedef struct _UUID_VECTOR
|
||||||
{
|
{
|
||||||
unsigned long Count;
|
ULONG Count;
|
||||||
UUID *Uuid[1];
|
UUID *Uuid[1];
|
||||||
} UUID_VECTOR;
|
} UUID_VECTOR;
|
||||||
#define uuid_vector_t UUID_VECTOR
|
#define uuid_vector_t UUID_VECTOR
|
||||||
|
@ -75,14 +75,14 @@ typedef struct _RPC_IF_ID
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned long Count;
|
ULONG Count;
|
||||||
RPC_IF_ID *IfId[1];
|
RPC_IF_ID *IfId[1];
|
||||||
} RPC_IF_ID_VECTOR;
|
} RPC_IF_ID_VECTOR;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
unsigned int Count;
|
unsigned int Count;
|
||||||
unsigned long Stats[1];
|
ULONG Stats[1];
|
||||||
} RPC_STATS_VECTOR;
|
} RPC_STATS_VECTOR;
|
||||||
|
|
||||||
typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
|
typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
|
||||||
|
@ -195,66 +195,66 @@ typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
|
||||||
typedef struct _RPC_POLICY
|
typedef struct _RPC_POLICY
|
||||||
{
|
{
|
||||||
unsigned int Length;
|
unsigned int Length;
|
||||||
unsigned long EndpointFlags;
|
ULONG EndpointFlags;
|
||||||
unsigned long NICFlags;
|
ULONG NICFlags;
|
||||||
} RPC_POLICY, *PRPC_POLICY;
|
} RPC_POLICY, *PRPC_POLICY;
|
||||||
|
|
||||||
typedef struct _SEC_WINNT_AUTH_IDENTITY_W
|
typedef struct _SEC_WINNT_AUTH_IDENTITY_W
|
||||||
{
|
{
|
||||||
unsigned short* User;
|
unsigned short* User;
|
||||||
unsigned long UserLength;
|
ULONG UserLength;
|
||||||
unsigned short* Domain;
|
unsigned short* Domain;
|
||||||
unsigned long DomainLength;
|
ULONG DomainLength;
|
||||||
unsigned short* Password;
|
unsigned short* Password;
|
||||||
unsigned long PasswordLength;
|
ULONG PasswordLength;
|
||||||
unsigned long Flags;
|
ULONG Flags;
|
||||||
} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
|
} SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
|
||||||
|
|
||||||
typedef struct _SEC_WINNT_AUTH_IDENTITY_A
|
typedef struct _SEC_WINNT_AUTH_IDENTITY_A
|
||||||
{
|
{
|
||||||
unsigned char* User;
|
unsigned char* User;
|
||||||
unsigned long UserLength;
|
ULONG UserLength;
|
||||||
unsigned char* Domain;
|
unsigned char* Domain;
|
||||||
unsigned long DomainLength;
|
ULONG DomainLength;
|
||||||
unsigned char* Password;
|
unsigned char* Password;
|
||||||
unsigned long PasswordLength;
|
ULONG PasswordLength;
|
||||||
unsigned long Flags;
|
ULONG Flags;
|
||||||
} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
|
} SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
|
||||||
|
|
||||||
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
|
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
|
||||||
{
|
{
|
||||||
SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
|
SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
|
||||||
unsigned long Flags;
|
ULONG Flags;
|
||||||
unsigned long AuthenticationTarget;
|
ULONG AuthenticationTarget;
|
||||||
unsigned long NumberOfAuthnSchemes;
|
ULONG NumberOfAuthnSchemes;
|
||||||
unsigned long *AuthnSchemes;
|
ULONG *AuthnSchemes;
|
||||||
unsigned short *ServerCertificateSubject;
|
unsigned short *ServerCertificateSubject;
|
||||||
} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
|
} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
|
||||||
|
|
||||||
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
|
typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
|
||||||
{
|
{
|
||||||
SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
|
SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
|
||||||
unsigned long Flags;
|
ULONG Flags;
|
||||||
unsigned long AuthenticationTarget;
|
ULONG AuthenticationTarget;
|
||||||
unsigned long NumberOfAuthnSchemes;
|
ULONG NumberOfAuthnSchemes;
|
||||||
unsigned long *AuthnSchemes;
|
ULONG *AuthnSchemes;
|
||||||
unsigned char *ServerCertificateSubject;
|
unsigned char *ServerCertificateSubject;
|
||||||
} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
|
} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
|
||||||
|
|
||||||
typedef struct _RPC_SECURITY_QOS {
|
typedef struct _RPC_SECURITY_QOS {
|
||||||
unsigned long Version;
|
ULONG Version;
|
||||||
unsigned long Capabilities;
|
ULONG Capabilities;
|
||||||
unsigned long IdentityTracking;
|
ULONG IdentityTracking;
|
||||||
unsigned long ImpersonationType;
|
ULONG ImpersonationType;
|
||||||
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
|
} RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
|
||||||
|
|
||||||
typedef struct _RPC_SECURITY_QOS_V2_W
|
typedef struct _RPC_SECURITY_QOS_V2_W
|
||||||
{
|
{
|
||||||
unsigned long Version;
|
ULONG Version;
|
||||||
unsigned long Capabilities;
|
ULONG Capabilities;
|
||||||
unsigned long IdentityTracking;
|
ULONG IdentityTracking;
|
||||||
unsigned long ImpersonationType;
|
ULONG ImpersonationType;
|
||||||
unsigned long AdditionalSecurityInfoType;
|
ULONG AdditionalSecurityInfoType;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
|
RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
|
||||||
|
@ -263,11 +263,11 @@ typedef struct _RPC_SECURITY_QOS_V2_W
|
||||||
|
|
||||||
typedef struct _RPC_SECURITY_QOS_V2_A
|
typedef struct _RPC_SECURITY_QOS_V2_A
|
||||||
{
|
{
|
||||||
unsigned long Version;
|
ULONG Version;
|
||||||
unsigned long Capabilities;
|
ULONG Capabilities;
|
||||||
unsigned long IdentityTracking;
|
ULONG IdentityTracking;
|
||||||
unsigned long ImpersonationType;
|
ULONG ImpersonationType;
|
||||||
unsigned long AdditionalSecurityInfoType;
|
ULONG AdditionalSecurityInfoType;
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
|
RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
|
||||||
|
|
|
@ -36,7 +36,7 @@ typedef struct _RPC_SYNTAX_IDENTIFIER {
|
||||||
typedef struct _RPC_MESSAGE
|
typedef struct _RPC_MESSAGE
|
||||||
{
|
{
|
||||||
RPC_BINDING_HANDLE Handle;
|
RPC_BINDING_HANDLE Handle;
|
||||||
unsigned long DataRepresentation;
|
ULONG DataRepresentation;
|
||||||
void* Buffer;
|
void* Buffer;
|
||||||
unsigned int BufferLength;
|
unsigned int BufferLength;
|
||||||
unsigned int ProcNum;
|
unsigned int ProcNum;
|
||||||
|
@ -45,7 +45,7 @@ typedef struct _RPC_MESSAGE
|
||||||
void* ReservedForRuntime;
|
void* ReservedForRuntime;
|
||||||
RPC_MGR_EPV* ManagerEpv;
|
RPC_MGR_EPV* ManagerEpv;
|
||||||
void* ImportContext;
|
void* ImportContext;
|
||||||
unsigned long RpcFlags;
|
ULONG RpcFlags;
|
||||||
} RPC_MESSAGE, *PRPC_MESSAGE;
|
} RPC_MESSAGE, *PRPC_MESSAGE;
|
||||||
|
|
||||||
/* or'ed with ProcNum */
|
/* or'ed with ProcNum */
|
||||||
|
@ -202,13 +202,13 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
|
||||||
typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
|
typedef RPC_STATUS (*RPC_BLOCKING_FN)(void* hWnd, void* Context, void* hSyncEvent);
|
||||||
|
|
||||||
RPCRTAPI RPC_STATUS RPC_ENTRY
|
RPCRTAPI RPC_STATUS RPC_ENTRY
|
||||||
I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, unsigned long ServerTid );
|
I_RpcBindingSetAsync( RPC_BINDING_HANDLE Binding, RPC_BLOCKING_FN BlockingFn, ULONG ServerTid );
|
||||||
|
|
||||||
RPCRTAPI RPC_STATUS RPC_ENTRY
|
RPCRTAPI RPC_STATUS RPC_ENTRY
|
||||||
I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
|
I_RpcSetThreadParams( int fClientFree, void* Context, void* hWndClient );
|
||||||
|
|
||||||
RPCRTAPI UINT RPC_ENTRY
|
RPCRTAPI UINT RPC_ENTRY
|
||||||
I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, unsigned long lParam );
|
I_RpcWindowProc( void* hWnd, unsigned int Message, unsigned int wParam, ULONG lParam );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ struct NDR_ALLOC_ALL_NODES_CONTEXT;
|
||||||
struct NDR_POINTER_QUEUE_STATE;
|
struct NDR_POINTER_QUEUE_STATE;
|
||||||
|
|
||||||
typedef unsigned char *RPC_BUFPTR;
|
typedef unsigned char *RPC_BUFPTR;
|
||||||
typedef unsigned long RPC_LENGTH;
|
typedef ULONG RPC_LENGTH;
|
||||||
typedef void (__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
|
typedef void (__RPC_USER *EXPR_EVAL)(struct _MIDL_STUB_MESSAGE *);
|
||||||
typedef const unsigned char *PFORMAT_STRING;
|
typedef const unsigned char *PFORMAT_STRING;
|
||||||
|
|
||||||
|
@ -562,6 +562,18 @@ RPCRTAPI void RPC_ENTRY
|
||||||
RPCRTAPI void RPC_ENTRY
|
RPCRTAPI void RPC_ENTRY
|
||||||
NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
|
NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, unsigned char FormatChar );
|
||||||
|
|
||||||
|
RPCRTAPI unsigned char* RPC_ENTRY
|
||||||
|
NdrByteCountPointerMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
|
||||||
|
RPCRTAPI unsigned char* RPC_ENTRY
|
||||||
|
NdrByteCountPointerUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc );
|
||||||
|
RPCRTAPI void RPC_ENTRY
|
||||||
|
NdrByteCountPointerBufferSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
|
||||||
|
RPCRTAPI void RPC_ENTRY
|
||||||
|
NdrByteCountPointerFree( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat );
|
||||||
|
|
||||||
|
RPCRTAPI unsigned char* RPC_ENTRY
|
||||||
|
NdrRangeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char** ppMemory, PFORMAT_STRING pFormat, unsigned char fMustAlloc );
|
||||||
|
|
||||||
/* while MS declares each prototype separately, I prefer to use macros for this kind of thing instead */
|
/* while MS declares each prototype separately, I prefer to use macros for this kind of thing instead */
|
||||||
#define SIMPLE_TYPE_MARSHAL(type) \
|
#define SIMPLE_TYPE_MARSHAL(type) \
|
||||||
RPCRTAPI unsigned char* RPC_ENTRY \
|
RPCRTAPI unsigned char* RPC_ENTRY \
|
||||||
|
@ -590,11 +602,9 @@ TYPE_MARSHAL(VaryingArray)
|
||||||
TYPE_MARSHAL(ComplexArray)
|
TYPE_MARSHAL(ComplexArray)
|
||||||
TYPE_MARSHAL(EncapsulatedUnion)
|
TYPE_MARSHAL(EncapsulatedUnion)
|
||||||
TYPE_MARSHAL(NonEncapsulatedUnion)
|
TYPE_MARSHAL(NonEncapsulatedUnion)
|
||||||
TYPE_MARSHAL(ByteCountPointer)
|
|
||||||
TYPE_MARSHAL(XmitOrRepAs)
|
TYPE_MARSHAL(XmitOrRepAs)
|
||||||
TYPE_MARSHAL(UserMarshal)
|
TYPE_MARSHAL(UserMarshal)
|
||||||
TYPE_MARSHAL(InterfacePointer)
|
TYPE_MARSHAL(InterfacePointer)
|
||||||
TYPE_MARSHAL(Range)
|
|
||||||
|
|
||||||
SIMPLE_TYPE_MARSHAL(ConformantString)
|
SIMPLE_TYPE_MARSHAL(ConformantString)
|
||||||
SIMPLE_TYPE_MARSHAL(NonConformantString)
|
SIMPLE_TYPE_MARSHAL(NonConformantString)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue