Sync to Wine-20050628: Robert Shearman rob@codeweavers.com - Improve tracing. - Implement FC_UP and partially FC_OP. - Don't needlessly marshal 4 bytes in NdrPointer*. - Fix an RPC server startup race introduced by me. - Don't pass the PROFILE_SERVER flag in to CreateNamedPipe as it is bogus. - Call FlushFileBuffers to make sure the other end of the pipe doesn't get cut off prematurely. - Don't call CancelIo as we should never have async I/O pending. - Make NdrInterfacePointer* more reliable. Dmitry Timoshkov dmitry@codeweavers.com - Make remaining OLE interface vtables const. Alexandre Julliard julliard@winehq.org - Sort entry points in the same order as Windows. Mike Hearn mh@codeweavers.com - Initialize DataRepresentation in NdrClientInitializeNew, not NdrSendReceive. Modified: trunk/reactos/lib/rpcrt4/cproxy.c Modified: trunk/reactos/lib/rpcrt4/cpsf.c Modified: trunk/reactos/lib/rpcrt4/ndr_marshall.c Modified: trunk/reactos/lib/rpcrt4/ndr_midl.c Modified: trunk/reactos/lib/rpcrt4/ndr_ole.c Modified: trunk/reactos/lib/rpcrt4/rpc_binding.c Modified: trunk/reactos/lib/rpcrt4/rpc_server.c Modified: trunk/reactos/lib/rpcrt4/rpcrt4.spec _____
Modified: trunk/reactos/lib/rpcrt4/cproxy.c --- trunk/reactos/lib/rpcrt4/cproxy.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/cproxy.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -43,7 +43,7 @@
/* I don't know what MS's std proxy structure looks like, so this probably doesn't match, but that shouldn't matter */ typedef struct { - IRpcProxyBufferVtbl *lpVtbl; + const IRpcProxyBufferVtbl *lpVtbl; LPVOID *PVtbl; DWORD RefCount; const MIDL_STUBLESS_PROXY_INFO *stubless; @@ -55,7 +55,7 @@ struct StublessThunk *thunks; } StdProxyImpl;
-static IRpcProxyBufferVtbl StdProxy_Vtbl; +static const IRpcProxyBufferVtbl StdProxy_Vtbl;
#define ICOM_THIS_MULTI(impl,field,iface) impl* const This=(impl*)((char*)(iface) - offsetof(impl,field))
@@ -269,7 +269,7 @@ This->pChannel = NULL; }
-static IRpcProxyBufferVtbl StdProxy_Vtbl = +static const IRpcProxyBufferVtbl StdProxy_Vtbl = { StdProxy_QueryInterface, StdProxy_AddRef, _____
Modified: trunk/reactos/lib/rpcrt4/cpsf.c --- trunk/reactos/lib/rpcrt4/cpsf.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/cpsf.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -116,7 +116,7 @@
ProxyInfo->pStubVtblList[Index], iface, ppStub); }
-static IPSFactoryBufferVtbl CStdPSFactory_Vtbl = +static const IPSFactoryBufferVtbl CStdPSFactory_Vtbl = { CStdPSFactory_QueryInterface, CStdPSFactory_AddRef, _____
Modified: trunk/reactos/lib/rpcrt4/ndr_marshall.c --- trunk/reactos/lib/rpcrt4/ndr_marshall.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/ndr_marshall.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -562,6 +562,21 @@
return NULL; /* FIXME: is this always right? */ }
+static inline void dump_pointer_attr(unsigned char attr) +{ + if (attr & RPC_FC_P_ALLOCALLNODES) + TRACE(" RPC_FC_P_ALLOCALLNODES"); + if (attr & RPC_FC_P_DONTFREE) + TRACE(" RPC_FC_P_DONTFREE"); + if (attr & RPC_FC_P_ONSTACK) + TRACE(" RPC_FC_P_ONSTACK"); + if (attr & RPC_FC_P_SIMPLEPOINTER) + TRACE(" RPC_FC_P_SIMPLEPOINTER"); + if (attr & RPC_FC_P_DEREF) + TRACE(" RPC_FC_P_DEREF"); + TRACE("\n"); +} +
/*********************************************************************** * PointerMarshall */ @@ -575,7 +590,7 @@ NDR_MARSHALL m;
TRACE("(%p,%p,%p,%p)\n", pStubMsg, Buffer, Pointer, pFormat); - TRACE("type=%d, attr=%d\n", type, attr); + TRACE("type=0x%x, attr=", type); dump_pointer_attr(attr); pFormat += 2; if (attr & RPC_FC_P_SIMPLEPOINTER) desc = pFormat; else desc = pFormat + *(const SHORT*)pFormat; @@ -584,21 +599,33 @@ TRACE("deref => %p\n", Pointer); }
- *(LPVOID*)Buffer = 0; - switch (type) { case RPC_FC_RP: /* ref pointer (always non-null) */ +#if 0 /* this causes problems for InstallShield so is disabled - we need more tests */ + if (!Pointer) + RpcRaiseException(RPC_X_NULL_REF_POINTER); +#endif break; case RPC_FC_UP: /* unique pointer */ + case RPC_FC_OP: /* object pointer - same as unique here */ + TRACE("writing %p to buffer\n", Pointer); + NDR_LOCAL_UINT32_WRITE(pStubMsg->Buffer, (unsigned long)Pointer); + pStubMsg->Buffer += 4; break; + case RPC_FC_FP: default: FIXME("unhandled ptr type=%02x\n", type); + RpcRaiseException(RPC_X_BAD_STUB_DATA); }
- m = NdrMarshaller[*desc & NDR_TABLE_MASK]; - if (m) m(pStubMsg, Pointer, desc); - else FIXME("no marshaller for data type=%02x\n", *desc); + TRACE("calling marshaller for type 0x%x\n", (int)*desc);
+ if (Pointer) { + m = NdrMarshaller[*desc & NDR_TABLE_MASK]; + if (m) m(pStubMsg, Pointer, desc); + else FIXME("no marshaller for data type=%02x\n", *desc); + } + STD_OVERFLOW_CHECK(pStubMsg); }
@@ -614,9 +641,10 @@ unsigned type = pFormat[0], attr = pFormat[1]; PFORMAT_STRING desc; NDR_UNMARSHALL m; + DWORD pointer_id = 0;
TRACE("(%p,%p,%p,%p,%d)\n", pStubMsg, Buffer, pPointer, pFormat, fMustAlloc); - TRACE("type=%d, attr=%d\n", type, attr); + TRACE("type=0x%x, attr=", type); dump_pointer_attr(attr); pFormat += 2; if (attr & RPC_FC_P_SIMPLEPOINTER) desc = pFormat; else desc = pFormat + *(const SHORT*)pFormat; @@ -627,18 +655,27 @@
switch (type) { case RPC_FC_RP: /* ref pointer (always non-null) */ + pointer_id = ~0UL; break; case RPC_FC_UP: /* unique pointer */ + pointer_id = NDR_LOCAL_UINT32_READ(pStubMsg->Buffer); + pStubMsg->Buffer += 4; break; + case RPC_FC_OP: /* object pointer - we must free data before overwriting it */ + case RPC_FC_FP: default: FIXME("unhandled ptr type=%02x\n", type); + RpcRaiseException(RPC_X_BAD_STUB_DATA); }
*pPointer = NULL;
- m = NdrUnmarshaller[*desc & NDR_TABLE_MASK]; - if (m) m(pStubMsg, pPointer, desc, fMustAlloc); - else FIXME("no unmarshaller for data type=%02x\n", *desc); + if (pointer_id) { + m = NdrUnmarshaller[*desc & NDR_TABLE_MASK]; + if (m) m(pStubMsg, pPointer, desc, fMustAlloc); + else FIXME("no unmarshaller for data type=%02x\n", *desc); + } + TRACE("pointer=%p\n", *pPointer); }
@@ -666,10 +703,17 @@ switch (type) { case RPC_FC_RP: /* ref pointer (always non-null) */ break; - case RPC_FC_UP: /* unique pointer */ + case RPC_FC_OP: + case RPC_FC_UP: + pStubMsg->BufferLength += 4; + /* NULL pointer has no further representation */ + if (!Pointer) + return; break; + case RPC_FC_FP: default: FIXME("unhandled ptr type=%02x\n", type); + RpcRaiseException(RPC_X_BAD_STUB_DATA); }
m = NdrBufferSizer[*desc & NDR_TABLE_MASK]; @@ -689,7 +733,7 @@ NDR_MEMORYSIZE m;
FIXME("(%p,%p,%p): stub\n", pStubMsg, Buffer, pFormat); - TRACE("type=%d, attr=%d\n", type, attr); + TRACE("type=%d, attr=", type); dump_pointer_attr(attr); pFormat += 2; if (attr & RPC_FC_P_SIMPLEPOINTER) desc = pFormat; else desc = pFormat + *(const SHORT*)pFormat; @@ -702,6 +746,7 @@ break; default: FIXME("unhandled ptr type=%02x\n", type); + RpcRaiseException(RPC_X_BAD_STUB_DATA); }
m = NdrMemorySizer[*desc & NDR_TABLE_MASK]; @@ -723,7 +768,7 @@ NDR_FREE m;
TRACE("(%p,%p,%p)\n", pStubMsg, Pointer, pFormat); - TRACE("type=%d, attr=%d\n", type, attr); + TRACE("type=%d, attr=", type); dump_pointer_attr(attr); if (attr & RPC_FC_P_DONTFREE) return; pFormat += 2; if (attr & RPC_FC_P_SIMPLEPOINTER) desc = pFormat; @@ -1085,7 +1130,6 @@
pStubMsg->BufferMark = pStubMsg->Buffer; PointerMarshall(pStubMsg, pStubMsg->Buffer, pMemory, pFormat); - pStubMsg->Buffer += 4;
STD_OVERFLOW_CHECK(pStubMsg);
@@ -1104,7 +1148,6 @@
pStubMsg->BufferMark = pStubMsg->Buffer; PointerUnmarshall(pStubMsg, pStubMsg->Buffer, ppMemory, pFormat, fMustAlloc); - pStubMsg->Buffer += 4;
return NULL; } @@ -1117,7 +1160,6 @@ PFORMAT_STRING pFormat) { TRACE("(%p,%p,%p)\n", pStubMsg, pMemory, pFormat); - pStubMsg->BufferLength += 4; PointerBufferSize(pStubMsg, pMemory, pFormat); }
_____
Modified: trunk/reactos/lib/rpcrt4/ndr_midl.c --- trunk/reactos/lib/rpcrt4/ndr_midl.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/ndr_midl.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -185,6 +185,7 @@
assert( pRpcMessage && pStubMsg && pStubDesc );
memset(pRpcMessage, 0, sizeof(RPC_MESSAGE)); + pRpcMessage->DataRepresentation = NDR_LOCAL_DATA_REPRESENTATION;
/* not everyone allocates stack space for w2kReserved */ memset(pStubMsg, 0, FIELD_OFFSET(MIDL_STUB_MESSAGE,pCSInfo)); @@ -277,9 +278,6 @@ return NULL; }
- /* FIXME: Seems wrong. Where should this really come from, and when? */ - pStubMsg->RpcMsg->DataRepresentation = NDR_LOCAL_DATA_REPRESENTATION; - if (I_RpcSendReceive(pStubMsg->RpcMsg) != RPC_S_OK) { WARN("I_RpcSendReceive did not return success.\n"); /* FIXME: raise exception? */ _____
Modified: trunk/reactos/lib/rpcrt4/ndr_ole.c --- trunk/reactos/lib/rpcrt4/ndr_ole.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/ndr_ole.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -79,7 +79,7 @@
* (which also implements the MInterfacePointer structure) */ typedef struct RpcStreamImpl { - IStreamVtbl *lpVtbl; + const IStreamVtbl *lpVtbl; DWORD RefCount; PMIDL_STUB_MESSAGE pMsg; LPDWORD size; @@ -126,13 +126,18 @@ ULONG *pcbRead) { RpcStreamImpl *This = (RpcStreamImpl *)iface; - if (This->pos + cb > *This->size) cb = *This->size - This->pos; + HRESULT hr = S_OK; + if (This->pos + cb > *This->size) + { + cb = *This->size - This->pos; + hr = S_FALSE; + } if (cb) { memcpy(pv, This->data + This->pos, cb); This->pos += cb; } if (pcbRead) *pcbRead = cb; - return S_OK; + return hr; }
static HRESULT WINAPI RpcStream_Write(LPSTREAM iface, @@ -141,6 +146,8 @@ ULONG *pcbWritten) { RpcStreamImpl *This = (RpcStreamImpl *)iface; + if (This->data + cb > (char *)This->pMsg->BufferEnd) + return STG_E_MEDIUMFULL; memcpy(This->data + This->pos, pv, cb); This->pos += cb; if (This->pos > *This->size) *This->size = This->pos; @@ -182,7 +189,7 @@ return S_OK; }
-static IStreamVtbl RpcStream_Vtbl = +static const IStreamVtbl RpcStream_Vtbl = { RpcStream_QueryInterface, RpcStream_AddRef, @@ -247,11 +254,15 @@ TRACE("(%p,%p,%p)\n", pStubMsg, pMemory, pFormat); pStubMsg->MaxCount = 0; if (!LoadCOM()) return NULL; - stream = RpcStream_Create(pStubMsg, TRUE); - hr = COM_MarshalInterface(stream, riid, (LPUNKNOWN)pMemory, - pStubMsg->dwDestContext, pStubMsg->pvDestContext, - MSHLFLAGS_NORMAL); - IStream_Release(stream); + if (pStubMsg->Buffer + sizeof(DWORD) < pStubMsg->BufferEnd) { + stream = RpcStream_Create(pStubMsg, TRUE); + if (stream) { + hr = COM_MarshalInterface(stream, riid, (LPUNKNOWN)pMemory, + pStubMsg->dwDestContext, pStubMsg->pvDestContext, + MSHLFLAGS_NORMAL); + IStream_Release(stream); + } + } return NULL; }
@@ -269,9 +280,13 @@ TRACE("(%p,%p,%p,%d)\n", pStubMsg, ppMemory, pFormat, fMustAlloc); if (!LoadCOM()) return NULL; *(LPVOID*)ppMemory = NULL; - stream = RpcStream_Create(pStubMsg, FALSE); - hr = COM_UnmarshalInterface(stream, &IID_NULL, (LPVOID*)ppMemory); - IStream_Release(stream); + if (pStubMsg->Buffer + sizeof(DWORD) < pStubMsg->BufferEnd) { + stream = RpcStream_Create(pStubMsg, FALSE); + if (stream) { + hr = COM_UnmarshalInterface(stream, &IID_NULL, (LPVOID*)ppMemory); + IStream_Release(stream); + } + } return NULL; }
@@ -292,7 +307,7 @@ pStubMsg->dwDestContext, pStubMsg->pvDestContext, MSHLFLAGS_NORMAL); TRACE("size=%ld\n", size); - pStubMsg->BufferLength += sizeof(DWORD) + size; + if (size) pStubMsg->BufferLength += sizeof(DWORD) + size; }
/*********************************************************************** _____
Modified: trunk/reactos/lib/rpcrt4/rpc_binding.c --- trunk/reactos/lib/rpcrt4/rpc_binding.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/rpc_binding.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -142,7 +142,7 @@
pname = HeapAlloc(GetProcessHeap(), 0, strlen(prefix) + strlen(Connection->Endpoint) + 1); strcat(strcpy(pname, prefix), Connection->Endpoint); TRACE("listening on %s\n", pname); - Connection->conn = CreateNamedPipeA(pname, PROFILE_SERVER | PIPE_ACCESS_DUPLEX, + Connection->conn = CreateNamedPipeA(pname, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE, PIPE_UNLIMITED_INSTANCES, RPC_MAX_PACKET_SIZE, RPC_MAX_PACKET_SIZE, 5000, NULL); HeapFree(GetProcessHeap(), 0, pname); @@ -167,7 +167,7 @@ pname = HeapAlloc(GetProcessHeap(), 0, strlen(prefix) + strlen(Connection->Endpoint) + 1); strcat(strcpy(pname, prefix), Connection->Endpoint); TRACE("listening on %s\n", pname); - Connection->conn = CreateNamedPipeA(pname, PROFILE_SERVER | PIPE_ACCESS_DUPLEX, + Connection->conn = CreateNamedPipeA(pname, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, RPC_MAX_PACKET_SIZE, RPC_MAX_PACKET_SIZE, 5000, NULL); HeapFree(GetProcessHeap(), 0, pname); @@ -278,7 +278,7 @@ { TRACE("(Connection == ^%p)\n", Connection); if (Connection->conn) { - CancelIo(Connection->conn); + FlushFileBuffers(Connection->conn); CloseHandle(Connection->conn); Connection->conn = 0; } _____
Modified: trunk/reactos/lib/rpcrt4/rpc_server.c --- trunk/reactos/lib/rpcrt4/rpc_server.c 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/rpc_server.c 2005-08-04 21:35:00 UTC (rev 17048) @@ -858,8 +858,11 @@
LeaveCriticalSection(&server_cs);
if (sif->Flags & RPC_IF_AUTOLISTEN) { - /* well, start listening, I think... */ RPCRT4_start_listen(TRUE); + + /* make sure server is actually listening on the interface before + * returning */ + RPCRT4_sync_with_server_thread(); }
return RPC_S_OK; _____
Modified: trunk/reactos/lib/rpcrt4/rpcrt4.spec --- trunk/reactos/lib/rpcrt4/rpcrt4.spec 2005-08-04 18:11:03 UTC (rev 17047) +++ trunk/reactos/lib/rpcrt4/rpcrt4.spec 2005-08-04 21:35:00 UTC (rev 17048) @@ -1,7 +1,131 @@
+@ stdcall CreateProxyFromTypeInfo(ptr ptr ptr ptr ptr) +@ stub CreateStubFromTypeInfo +@ stdcall CStdStubBuffer_AddRef(ptr) +@ stdcall CStdStubBuffer_Connect(ptr ptr) +@ stdcall CStdStubBuffer_CountRefs(ptr) +@ stdcall CStdStubBuffer_DebugServerQueryInterface(ptr ptr) +@ stdcall CStdStubBuffer_DebugServerRelease(ptr ptr) +@ stdcall CStdStubBuffer_Disconnect(ptr) +@ stdcall CStdStubBuffer_Invoke(ptr ptr ptr) +@ stdcall CStdStubBuffer_IsIIDSupported(ptr ptr) +@ stdcall CStdStubBuffer_QueryInterface(ptr ptr ptr) +@ stub CreateServerInterfaceFromStub # wxp @ stdcall DceErrorInqTextA (long ptr) @ stdcall DceErrorInqTextW (long ptr) @ stdcall -private DllRegisterServer() RPCRT4_DllRegisterServer - +@ stub GlobalMutexClearExternal +@ stub GlobalMutexRequestExternal +@ stdcall IUnknown_AddRef_Proxy(ptr) +@ stdcall IUnknown_QueryInterface_Proxy(ptr ptr ptr) +@ stdcall IUnknown_Release_Proxy(ptr) +@ stub I_RpcAbortAsyncCall +@ stub I_RpcAllocate +@ stub I_RpcAsyncAbortCall +@ stub I_RpcAsyncSendReceive # NT4 +@ stub I_RpcAsyncSetHandle +@ stub I_RpcBCacheAllocate +@ stub I_RpcBCacheFree +@ stub I_RpcBindingCopy +@ stub I_RpcBindingInqConnId +@ stub I_RpcBindingInqDynamicEndPoint +@ stub I_RpcBindingInqDynamicEndPointA +@ stub I_RpcBindingInqDynamicEndPointW +@ stub I_RpcBindingInqLocalClientPID # wxp +@ stub I_RpcBindingInqSecurityContext +@ stub I_RpcBindingInqTransportType +@ stub I_RpcBindingInqWireIdForSnego +@ stub I_RpcBindingIsClientLocal +# 9x version of I_RpcBindingSetAsync has 3 arguments, not 2 +@ stdcall I_RpcBindingSetAsync(ptr ptr) +@ stub I_RpcBindingToStaticStringBindingW +@ stub I_RpcClearMutex +@ stub I_RpcConnectionInqSockBuffSize2 +@ stub I_RpcConnectionInqSockBuffSize +@ stub I_RpcConnectionSetSockBuffSize +@ stub I_RpcDeleteMutex +@ stub I_RpcEnableWmiTrace # wxp +@ stub I_RpcExceptionFilter # wxp +@ stub I_RpcFree +@ stdcall I_RpcFreeBuffer(ptr) +@ stub I_RpcFreePipeBuffer +@ stub I_RpcGetAssociationContext +@ stdcall I_RpcGetBuffer(ptr) +@ stub I_RpcGetBufferWithObject +@ stub I_RpcGetCurrentCallHandle +@ stub I_RpcGetExtendedError +@ stub I_RpcGetServerContextList +@ stub I_RpcGetThreadEvent # win9x +@ stub I_RpcGetThreadWindowHandle # win9x +@ stub I_RpcIfInqTransferSyntaxes +@ stub I_RpcLaunchDatagramReceiveThread # win9x +@ stub I_RpcLogEvent +@ stub I_RpcMapWin32Status +@ stub I_RpcMonitorAssociation +@ stub I_RpcNegotiateTransferSyntax # wxp +@ stub I_RpcNsBindingSetEntryName +@ stub I_RpcNsBindingSetEntryNameA +@ stub I_RpcNsBindingSetEntryNameW +@ stub I_RpcNsInterfaceExported +@ stub I_RpcNsInterfaceUnexported +@ stub I_RpcParseSecurity +@ stub I_RpcPauseExecution +@ stub I_RpcProxyNewConnection # wxp +@ stub I_RpcReallocPipeBuffer +@ stdcall I_RpcReceive(ptr) +@ stub I_RpcRequestMutex +@ stdcall I_RpcSend(ptr) +@ stdcall I_RpcSendReceive(ptr) +@ stub I_RpcServerAllocateIpPort +@ stub I_RpcServerInqAddressChangeFn +@ stub I_RpcServerInqLocalConnAddress # wxp +@ stub I_RpcServerInqTransportType +@ stub I_RpcServerRegisterForwardFunction +@ stub I_RpcServerSetAddressChangeFn +@ stdcall I_RpcServerStartListening(ptr) # win9x +@ stdcall I_RpcServerStopListening() # win9x +@ stub I_RpcServerUnregisterEndpointA # win9x +@ stub I_RpcServerUnregisterEndpointW # win9x +@ stub I_RpcServerUseProtseq2A +@ stub I_RpcServerUseProtseq2W +@ stub I_RpcServerUseProtseqEp2A +@ stub I_RpcServerUseProtseqEp2W +@ stub I_RpcSetAssociationContext # win9x +@ stub I_RpcSetAsyncHandle +@ stub I_RpcSetServerContextList +@ stub I_RpcSetThreadParams # win9x +@ stub I_RpcSetWMsgEndpoint # NT4 +@ stub I_RpcSsDontSerializeContext +@ stub I_RpcStopMonitorAssociation +@ stub I_RpcSystemFunction001 # wxp (oh, brother!) +@ stub I_RpcTransCancelMigration # win9x +@ stub I_RpcTransClientMaxFrag # win9x +@ stub I_RpcTransClientReallocBuffer # win9x +@ stub I_RpcTransConnectionAllocatePacket +@ stub I_RpcTransConnectionFreePacket +@ stub I_RpcTransConnectionReallocPacket +@ stub I_RpcTransDatagramAllocate2 +@ stub I_RpcTransDatagramAllocate +@ stub I_RpcTransDatagramFree +@ stub I_RpcTransGetAddressList +@ stub I_RpcTransGetThreadEvent +@ stub I_RpcTransIoCancelled +@ stub I_RpcTransMaybeMakeReceiveAny # win9x +@ stub I_RpcTransMaybeMakeReceiveDirect # win9x +@ stub I_RpcTransPingServer # win9x +@ stub I_RpcTransServerFindConnection # win9x +@ stub I_RpcTransServerFreeBuffer # win9x +@ stub I_RpcTransServerMaxFrag # win9x +@ stub I_RpcTransServerNewConnection +@ stub I_RpcTransServerProtectThread # win9x +@ stub I_RpcTransServerReallocBuffer # win9x +@ stub I_RpcTransServerReceiveDirectReady # win9x +@ stub I_RpcTransServerUnprotectThread # win9x +@ stub I_RpcTurnOnEEInfoPropagation # wxp +@ stdcall I_RpcWindowProc(ptr long long long) # win9x +@ stub I_RpcltDebugSetPDUFilter +@ stub I_UuidCreate +@ stub MIDL_wchar_strcpy +@ stub MIDL_wchar_strlen @ stub MesBufferHandleReset @ stub MesDecodeBufferHandleCreate @ stub MesDecodeIncrementalHandleCreate @@ -11,10 +135,233 @@ @ stub MesHandleFree @ stub MesIncrementalHandleReset @ stub MesInqProcEncodingId - @ stub MqGetContext # win9x @ stub MqRegisterQueue # win9x - +@ stub NDRCContextBinding +@ stub NDRCContextMarshall +@ stub NDRCContextUnmarshall +@ stub NDRSContextMarshall2 +@ stub NDRSContextMarshall +@ stub NDRSContextMarshallEx +@ stub NDRSContextUnmarshall2 +@ stub NDRSContextUnmarshall +@ stub NDRSContextUnmarshallEx +@ stub NDRcopy +@ stdcall NdrAllocate(ptr long) +@ stub NdrAsyncClientCall +@ stub NdrAsyncServerCall +@ stub NdrByteCountPointerBufferSize +@ stub NdrByteCountPointerFree +@ stub NdrByteCountPointerMarshall +@ stub NdrByteCountPointerUnmarshall +@ stub NdrCStdStubBuffer2_Release +@ stdcall NdrCStdStubBuffer_Release(ptr ptr) +@ stdcall NdrClearOutParameters(ptr ptr ptr) +@ varargs NdrClientCall2(ptr ptr) +@ stub NdrClientCall +@ stub NdrClientContextMarshall +@ stub NdrClientContextUnmarshall +@ stub NdrClientInitialize +@ stdcall NdrClientInitializeNew(ptr ptr ptr long) +@ stdcall NdrComplexArrayBufferSize(ptr ptr ptr) +@ stdcall NdrComplexArrayFree(ptr ptr ptr) +@ stdcall NdrComplexArrayMarshall(ptr ptr ptr) +@ stdcall NdrComplexArrayMemorySize(ptr ptr) +@ stdcall NdrComplexArrayUnmarshall(ptr ptr ptr long) +@ stdcall NdrComplexStructBufferSize(ptr ptr ptr) +@ stdcall NdrComplexStructFree(ptr ptr ptr) +@ stdcall NdrComplexStructMarshall(ptr ptr ptr) +@ stdcall NdrComplexStructMemorySize(ptr ptr) +@ stdcall NdrComplexStructUnmarshall(ptr ptr ptr long) +@ stdcall NdrConformantArrayBufferSize(ptr ptr ptr) +@ stdcall NdrConformantArrayFree(ptr ptr ptr) +@ stdcall NdrConformantArrayMarshall(ptr ptr ptr) +@ stdcall NdrConformantArrayMemorySize(ptr ptr) +@ stdcall NdrConformantArrayUnmarshall(ptr ptr ptr long) +@ stdcall NdrConformantStringBufferSize(ptr ptr ptr) +@ stdcall NdrConformantStringMarshall(ptr ptr ptr) +@ stdcall NdrConformantStringMemorySize(ptr ptr) +@ stdcall NdrConformantStringUnmarshall(ptr ptr ptr long) +@ stub NdrConformantStructBufferSize +@ stub NdrConformantStructFree +@ stub NdrConformantStructMarshall +@ stub NdrConformantStructMemorySize +@ stub NdrConformantStructUnmarshall +@ stdcall NdrConformantVaryingArrayBufferSize(ptr ptr ptr) +@ stdcall NdrConformantVaryingArrayFree(ptr ptr ptr) +@ stdcall NdrConformantVaryingArrayMarshall(ptr ptr ptr) +@ stdcall NdrConformantVaryingArrayMemorySize(ptr ptr) +@ stdcall NdrConformantVaryingArrayUnmarshall(ptr ptr ptr long) +@ stub NdrConformantVaryingStructBufferSize +@ stub NdrConformantVaryingStructFree +@ stub NdrConformantVaryingStructMarshall +@ stub NdrConformantVaryingStructMemorySize +@ stub NdrConformantVaryingStructUnmarshall +@ stub NdrContextHandleInitialize +@ stub NdrContextHandleSize +@ stdcall NdrConvert2(ptr ptr long) +@ stdcall NdrConvert(ptr ptr) +@ stub NdrCorrelationFree +@ stub NdrCorrelationInitialize +@ stub NdrCorrelationPass +@ stub NdrDcomAsyncClientCall +@ stub NdrDcomAsyncStubCall +@ stdcall NdrDllCanUnloadNow(ptr) +@ stdcall NdrDllGetClassObject(ptr ptr ptr ptr ptr ptr) +@ stdcall NdrDllRegisterProxy(long ptr ptr) +@ stdcall NdrDllUnregisterProxy(long ptr ptr) +@ stub NdrEncapsulatedUnionBufferSize +@ stub NdrEncapsulatedUnionFree +@ stub NdrEncapsulatedUnionMarshall +@ stub NdrEncapsulatedUnionMemorySize +@ stub NdrEncapsulatedUnionUnmarshall +@ stub NdrFixedArrayBufferSize +@ stub NdrFixedArrayFree +@ stub NdrFixedArrayMarshall +@ stub NdrFixedArrayMemorySize +@ stub NdrFixedArrayUnmarshall +@ stdcall NdrFreeBuffer(ptr) +@ stub NdrFullPointerFree +@ stub NdrFullPointerInsertRefId +@ stub NdrFullPointerQueryPointer +@ stub NdrFullPointerQueryRefId +@ stub NdrFullPointerXlatFree +@ stub NdrFullPointerXlatInit +@ stdcall NdrGetBuffer(ptr long ptr) +@ stub NdrGetDcomProtocolVersion +@ stub NdrGetPartialBuffer +@ stub NdrGetPipeBuffer +@ stub NdrGetSimpleTypeBufferAlignment # wxp +@ stub NdrGetSimpleTypeBufferSize # wxp +@ stub NdrGetSimpleTypeMemorySize # wxp +@ stub NdrGetTypeFlags # wxp +@ stub NdrGetUserMarshallInfo +@ stub NdrHardStructBufferSize +@ stub NdrHardStructFree +@ stub NdrHardStructMarshall +@ stub NdrHardStructMemorySize +@ stub NdrHardStructUnmarshall +@ stdcall NdrInterfacePointerBufferSize(ptr ptr ptr) +@ stdcall NdrInterfacePointerFree(ptr ptr ptr) +@ stdcall NdrInterfacePointerMarshall(ptr ptr ptr) +@ stdcall NdrInterfacePointerMemorySize(ptr ptr) +@ stdcall NdrInterfacePointerUnmarshall(ptr ptr ptr long) +@ stub NdrIsAppDoneWithPipes +@ stub NdrMapCommAndFaultStatus +@ stub NdrMarkNextActivePipe +@ stub NdrMesProcEncodeDecode2 +@ stub NdrMesProcEncodeDecode +@ stub NdrMesSimpleTypeAlignSize +@ stub NdrMesSimpleTypeDecode +@ stub NdrMesSimpleTypeEncode +@ stub NdrMesTypeAlignSize2 +@ stub NdrMesTypeAlignSize +@ stub NdrMesTypeDecode2 +@ stub NdrMesTypeDecode +@ stub NdrMesTypeEncode2 +@ stub NdrMesTypeEncode +@ stub NdrMesTypeFree2 +@ stub NdrNonConformantStringBufferSize +@ stub NdrNonConformantStringMarshall +@ stub NdrNonConformantStringMemorySize +@ stub NdrNonConformantStringUnmarshall +@ stub NdrNonEncapsulatedUnionBufferSize +@ stub NdrNonEncapsulatedUnionFree +@ stub NdrNonEncapsulatedUnionMarshall +@ stub NdrNonEncapsulatedUnionMemorySize +@ stub NdrNonEncapsulatedUnionUnmarshall +@ stub NdrNsGetBuffer +@ stub NdrNsSendReceive +@ stdcall NdrOleAllocate(long) +@ stdcall NdrOleFree(ptr) +@ stub NdrOutInit # wxp +@ stub NdrPartialIgnoreClientBufferSize # wxp +@ stub NdrPartialIgnoreClientMarshall # wxp +@ stub NdrPartialIgnoreServerInitialize # wxp +@ stub NdrPartialIgnoreServerUnmarshall # wxp +@ stub NdrPipePull +@ stub NdrPipePush +@ stub NdrPipeSendReceive +@ stub NdrPipesDone +@ stub NdrPipesInitialize +@ stdcall NdrPointerBufferSize(ptr ptr ptr) +@ stdcall NdrPointerFree(ptr ptr ptr) +@ stdcall NdrPointerMarshall(ptr ptr ptr) +@ stdcall NdrPointerMemorySize(ptr ptr) +@ stdcall NdrPointerUnmarshall(ptr ptr ptr long) +@ stdcall NdrProxyErrorHandler(long) +@ stdcall NdrProxyFreeBuffer(ptr ptr) +@ stdcall NdrProxyGetBuffer(ptr ptr) +@ stdcall NdrProxyInitialize(ptr ptr ptr ptr long) +@ stdcall NdrProxySendReceive(ptr ptr) +@ stub NdrRangeUnmarshall +@ stub NdrRpcSmClientAllocate +@ stub NdrRpcSmClientFree +@ stub NdrRpcSmSetClientToOsf +@ stub NdrRpcSsDefaultAllocate +@ stub NdrRpcSsDefaultFree +@ stub NdrRpcSsDisableAllocate +@ stub NdrRpcSsEnableAllocate +@ stdcall NdrSendReceive(ptr ptr) +@ stub NdrServerCall2 +@ stub NdrServerCall +@ stub NdrServerContextMarshall +@ stub NdrServerContextNewMarshall # wxp +@ stub NdrServerContextNewUnmarshall # wxp +@ stub NdrServerContextUnmarshall +@ stub NdrServerInitialize +@ stub NdrServerInitializeMarshall +@ stdcall NdrServerInitializeNew(ptr ptr ptr) +@ stub NdrServerInitializePartial # wxp +@ stub NdrServerInitializeUnmarshall +@ stub NdrServerMarshall +@ stub NdrServerUnmarshall +@ stdcall NdrSimpleStructBufferSize(ptr ptr ptr) +@ stdcall NdrSimpleStructFree(ptr ptr ptr) +@ stdcall NdrSimpleStructMarshall(ptr ptr ptr) +@ stdcall NdrSimpleStructMemorySize(ptr ptr) +@ stdcall NdrSimpleStructUnmarshall(ptr ptr ptr long) +@ stdcall NdrSimpleTypeMarshall(ptr ptr long) +@ stdcall NdrSimpleTypeUnmarshall(ptr ptr long) +@ stub NdrStubCall2 +@ stub NdrStubCall +@ stub NdrStubForwardingFunction +@ stdcall NdrStubGetBuffer(ptr ptr ptr) +@ stdcall NdrStubInitialize(ptr ptr ptr ptr) +@ stub NdrStubInitializeMarshall +@ stub NdrTypeFlags # wxp +@ stub NdrTypeFree # wxp +@ stub NdrTypeMarshall # wxp +@ stub NdrTypeSize # wxp +@ stub NdrTypeUnmarshall # wxp +@ stub NdrUnmarshallBasetypeInline # wxp +@ stdcall NdrUserMarshalBufferSize(ptr ptr ptr) +@ stdcall NdrUserMarshalFree(ptr ptr ptr) +@ stdcall NdrUserMarshalMarshall(ptr ptr ptr) +@ stdcall NdrUserMarshalMemorySize(ptr ptr) +@ stub NdrUserMarshalSimpleTypeConvert +@ stdcall NdrUserMarshalUnmarshall(ptr ptr ptr long) +@ stub NdrVaryingArrayBufferSize +@ stub NdrVaryingArrayFree +@ stub NdrVaryingArrayMarshall +@ stub NdrVaryingArrayMemorySize +@ stub NdrVaryingArrayUnmarshall +@ stub NdrXmitOrRepAsBufferSize +@ stub NdrXmitOrRepAsFree +@ stub NdrXmitOrRepAsMarshall +@ stub NdrXmitOrRepAsMemorySize +@ stub NdrXmitOrRepAsUnmarshall +@ stub NdrpCreateProxy # wxp +@ stub NdrpCreateStub # wxp +@ stub NdrpGetProcFormatString # wxp +@ stub NdrpGetTypeFormatString # wxp +@ stub NdrpGetTypeGenCookie # wxp +@ stub NdrpMemoryIncrement # wxp +@ stub NdrpReleaseTypeFormatString # wxp +@ stub NdrpReleaseTypeGenCookie # wxp +@ stub NdrpSetRpcSsDefaults +@ stub NdrpVarVtOfTypeDesc # wxp +@ stub PerformRpcInitialization @ stub RpcAbortAsyncCall @ stub RpcAsyncAbortCall @ stub RpcAsyncCancelCall @@ -27,21 +374,21 @@ @ stdcall RpcBindingFromStringBindingA(str ptr) @ stdcall RpcBindingFromStringBindingW(wstr ptr) @ stub RpcBindingInqAuthClientA -@ stub RpcBindingInqAuthClientW @ stub RpcBindingInqAuthClientExA @ stub RpcBindingInqAuthClientExW +@ stub RpcBindingInqAuthClientW @ stub RpcBindingInqAuthInfoA -@ stub RpcBindingInqAuthInfoW @ stub RpcBindingInqAuthInfoExA @ stub RpcBindingInqAuthInfoExW +@ stub RpcBindingInqAuthInfoW @ stdcall RpcBindingInqObject(ptr ptr) @ stub RpcBindingInqOption @ stub RpcBindingReset @ stub RpcBindingServerFromClient @ stub RpcBindingSetAuthInfoA -@ stub RpcBindingSetAuthInfoW @ stub RpcBindingSetAuthInfoExA @ stub RpcBindingSetAuthInfoExW +@ stub RpcBindingSetAuthInfoW @ stdcall RpcBindingSetObject(ptr ptr) @ stub RpcBindingSetOption @ stdcall RpcBindingToStringBindingA(ptr ptr) @@ -54,17 +401,17 @@ @ stub RpcCertGeneratePrincipalNameW @ stub RpcCompleteAsyncCall @ stdcall RpcEpRegisterA(ptr ptr ptr str) -@ stub RpcEpRegisterW @ stub RpcEpRegisterNoReplaceA @ stub RpcEpRegisterNoReplaceW +@ stub RpcEpRegisterW @ stdcall RpcEpResolveBinding(ptr ptr) @ stdcall RpcEpUnregister(ptr ptr ptr) @ stub RpcErrorAddRecord # wxp @ stub RpcErrorClearInformation # wxp @ stub RpcErrorEndEnumeration # wxp @ stub RpcErrorGetNextRecord # wxp -@ stub RpcErrorNumberOfRecords # wxp @ stub RpcErrorLoadErrorInfo # wxp +@ stub RpcErrorNumberOfRecords # wxp @ stub RpcErrorResetEnumeration # wxp @ stub RpcErrorSaveErrorInfo # wxp @ stub RpcErrorStartEnumeration # wxp @@ -122,9 +469,9 @@ @ stdcall RpcServerListen(long long long) @ stdcall RpcServerRegisterAuthInfoA(str long ptr ptr) @ stdcall RpcServerRegisterAuthInfoW(wstr long ptr ptr) +@ stdcall RpcServerRegisterIf2(ptr ptr ptr long long long ptr) @ stdcall RpcServerRegisterIf(ptr ptr ptr) @ stdcall RpcServerRegisterIfEx(ptr ptr ptr long long ptr) -@ stdcall RpcServerRegisterIf2(ptr ptr ptr long long long ptr) @ stub RpcServerTestCancel @ stdcall RpcServerUnregisterIf(ptr ptr long) @ stdcall RpcServerUnregisterIfEx(ptr ptr long) @@ -133,17 +480,17 @@ @ stub RpcServerUseAllProtseqsIf @ stub RpcServerUseAllProtseqsIfEx @ stdcall RpcServerUseProtseqA(str long ptr) -@ stdcall RpcServerUseProtseqW(wstr long ptr) -@ stub RpcServerUseProtseqExA -@ stub RpcServerUseProtseqExW @ stdcall RpcServerUseProtseqEpA(str long str ptr) -@ stdcall RpcServerUseProtseqEpW(wstr long wstr ptr) @ stdcall RpcServerUseProtseqEpExA(str long str ptr ptr) @ stdcall RpcServerUseProtseqEpExW(wstr long wstr ptr ptr) +@ stdcall RpcServerUseProtseqEpW(wstr long wstr ptr) +@ stub RpcServerUseProtseqExA +@ stub RpcServerUseProtseqExW @ stub RpcServerUseProtseqIfA -@ stub RpcServerUseProtseqIfW @ stub RpcServerUseProtseqIfExA @ stub RpcServerUseProtseqIfExW +@ stub RpcServerUseProtseqIfW +@ stdcall RpcServerUseProtseqW(wstr long ptr) @ stub RpcServerYield @ stub RpcSmAllocate @ stub RpcSmClientFree @@ -176,23 +523,16 @@ @ stdcall RpcStringFreeW(ptr) @ stub RpcTestCancel @ stub RpcUserFree # wxp - -@ stub TowerConstruct -@ stub TowerExplode - @ stub SimpleTypeAlignment # wxp @ stub SimpleTypeBufferSize # wxp @ stub SimpleTypeMemorySize # wxp - -@ stub pfnFreeRoutines # wxp -@ stub pfnMarshallRouteines # wxp -@ stub pfnSizeRoutines # wxp -@ stub pfnUnmarshallRouteines # wxp - +@ stub StartServiceIfNecessary # win9x +@ stub TowerConstruct +@ stub TowerExplode @ stdcall UuidCompare(ptr ptr ptr) @ stdcall UuidCreate(ptr) -@ stdcall UuidCreateSequential(ptr) # win 2000 @ stdcall UuidCreateNil(ptr) +@ stdcall UuidCreateSequential(ptr) # win 2000 @ stdcall UuidEqual(ptr ptr ptr) @ stdcall UuidFromStringA(str ptr) @ stdcall UuidFromStringW(wstr ptr) @@ -200,252 +540,6 @@ @ stdcall UuidIsNil(ptr ptr) @ stdcall UuidToStringA(ptr ptr) @ stdcall UuidToStringW(ptr ptr) - -@ stdcall CStdStubBuffer_QueryInterface(ptr ptr ptr) -@ stdcall CStdStubBuffer_AddRef(ptr) -@ stdcall CStdStubBuffer_Connect(ptr ptr) -@ stdcall CStdStubBuffer_Disconnect(ptr) -@ stdcall CStdStubBuffer_Invoke(ptr ptr ptr) -@ stdcall CStdStubBuffer_IsIIDSupported(ptr ptr) -@ stdcall CStdStubBuffer_CountRefs(ptr) -@ stdcall CStdStubBuffer_DebugServerQueryInterface(ptr ptr) -@ stdcall CStdStubBuffer_DebugServerRelease(ptr ptr) -@ stdcall NdrCStdStubBuffer_Release(ptr ptr) -@ stub NdrCStdStubBuffer2_Release - -@ stdcall IUnknown_QueryInterface_Proxy(ptr ptr ptr) -@ stdcall IUnknown_AddRef_Proxy(ptr) -@ stdcall IUnknown_Release_Proxy(ptr) - -@ stdcall NdrDllCanUnloadNow(ptr) -@ stdcall NdrDllGetClassObject(ptr ptr ptr ptr ptr ptr) -@ stdcall NdrDllRegisterProxy(long ptr ptr) -@ stdcall NdrDllUnregisterProxy(long ptr ptr) - -@ stdcall NdrAllocate(ptr long) -@ stub NdrAsyncClientCall -@ stub NdrAsyncServerCall -@ stdcall NdrClearOutParameters(ptr ptr ptr) -@ stub NdrClientCall -@ varargs NdrClientCall2(ptr ptr) -@ stub NdrClientInitialize -@ stdcall NdrClientInitializeNew(ptr ptr ptr long) -@ stub NdrContextHandleInitialize -@ stub NdrContextHandleSize -@ stdcall NdrConvert(ptr ptr) -@ stdcall NdrConvert2(ptr ptr long) -@ stub NdrCorrelationFree -@ stub NdrCorrelationInitialize -@ stub NdrCorrelationPass -@ stub CreateServerInterfaceFromStub # wxp -@ stub NdrDcomAsyncClientCall -@ stub NdrDcomAsyncStubCall -@ stdcall NdrFreeBuffer(ptr) -@ stub NdrFullPointerFree -@ stub NdrFullPointerInsertRefId -@ stub NdrFullPointerQueryPointer -@ stub NdrFullPointerQueryRefId -@ stub NdrFullPointerXlatFree -@ stub NdrFullPointerXlatInit -@ stdcall NdrGetBuffer(ptr long ptr) -@ stub NdrGetDcomProtocolVersion -@ stub NdrGetSimpleTypeBufferAlignment # wxp -@ stub NdrGetSimpleTypeBufferSize # wxp -@ stub NdrGetSimpleTypeMemorySize # wxp -@ stub NdrGetTypeFlags # wxp -@ stub NdrGetPartialBuffer -@ stub NdrGetPipeBuffer -@ stub NdrGetUserMarshallInfo -@ stub NdrIsAppDoneWithPipes -@ stub NdrMapCommAndFaultStatus -@ stub NdrMarkNextActivePipe -@ stub NdrMesProcEncodeDecode -@ stub NdrMesProcEncodeDecode2 -@ stub NdrMesSimpleTypeAlignSize -@ stub NdrMesSimpleTypeDecode -@ stub NdrMesSimpleTypeEncode -@ stub NdrMesTypeAlignSize -@ stub NdrMesTypeAlignSize2 -@ stub NdrMesTypeDecode -@ stub NdrMesTypeDecode2 -@ stub NdrMesTypeEncode -@ stub NdrMesTypeEncode2 -@ stub NdrMesTypeFree2 -@ stub NdrNsGetBuffer -@ stub NdrNsSendReceive -@ stdcall NdrOleAllocate(long) -@ stdcall NdrOleFree(ptr) -@ stub NdrOutInit # wxp -@ stub NdrPartialIgnoreClientBufferSize # wxp -@ stub NdrPartialIgnoreClientMarshall # wxp -@ stub NdrPartialIgnoreServerInitialize # wxp -@ stub NdrPartialIgnoreServerUnmarshall # wxp -@ stub NdrPipePull -@ stub NdrPipePush -@ stub NdrPipeSendReceive -@ stub NdrPipesDone -@ stub NdrPipesInitialize -@ stdcall NdrProxyErrorHandler(long) -@ stdcall NdrProxyFreeBuffer(ptr ptr) -@ stdcall NdrProxyGetBuffer(ptr ptr) -@ stdcall NdrProxyInitialize(ptr ptr ptr ptr long) -@ stdcall NdrProxySendReceive(ptr ptr) -@ stub NdrRangeUnmarshall -@ stub NdrRpcSmClientAllocate -@ stub NdrRpcSmClientFree -@ stub NdrRpcSmSetClientToOsf -@ stub NdrRpcSsDefaultAllocate -@ stub NdrRpcSsDefaultFree -@ stub NdrRpcSsDisableAllocate -@ stub NdrRpcSsEnableAllocate -@ stdcall NdrSendReceive(ptr ptr) -@ stub NdrServerCall -@ stub NdrServerCall2 -@ stub NdrStubCall -@ stub NdrStubCall2 -@ stub NdrStubForwardingFunction -@ stdcall NdrStubGetBuffer(ptr ptr ptr) -@ stdcall NdrStubInitialize(ptr ptr ptr ptr) -@ stub NdrStubInitializeMarshall -@ stub NdrpCreateProxy # wxp -@ stub NdrpCreateStub # wxp -@ stub NdrpGetProcFormatString # wxp -@ stub NdrpGetTypeFormatString # wxp -@ stub NdrpGetTypeGenCookie # wxp -@ stub NdrpMemoryIncrement # wxp -@ stub NdrpReleaseTypeFormatString # wxp -@ stub NdrpReleaseTypeGenCookie # wxp -@ stub NdrpSetRpcSsDefaults -@ stub NdrpVarVtOfTypeDesc # wxp [truncated at 1000 lines; 260 more skipped]