diff --git a/reactos/lib/rpcrt4/cproxy.c b/reactos/lib/rpcrt4/cproxy.c index af8709a22c5..301fdf989eb 100644 --- a/reactos/lib/rpcrt4/cproxy.c +++ b/reactos/lib/rpcrt4/cproxy.c @@ -43,7 +43,7 @@ struct StublessThunk; /* 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 @@ typedef struct { 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 @@ static VOID WINAPI StdProxy_Disconnect(LPRPCPROXYBUFFER iface) This->pChannel = NULL; } -static IRpcProxyBufferVtbl StdProxy_Vtbl = +static const IRpcProxyBufferVtbl StdProxy_Vtbl = { StdProxy_QueryInterface, StdProxy_AddRef, diff --git a/reactos/lib/rpcrt4/cpsf.c b/reactos/lib/rpcrt4/cpsf.c index 55af27c5790..5f342f3a5cf 100644 --- a/reactos/lib/rpcrt4/cpsf.c +++ b/reactos/lib/rpcrt4/cpsf.c @@ -116,7 +116,7 @@ static HRESULT WINAPI CStdPSFactory_CreateStub(LPPSFACTORYBUFFER iface, ProxyInfo->pStubVtblList[Index], iface, ppStub); } -static IPSFactoryBufferVtbl CStdPSFactory_Vtbl = +static const IPSFactoryBufferVtbl CStdPSFactory_Vtbl = { CStdPSFactory_QueryInterface, CStdPSFactory_AddRef, diff --git a/reactos/lib/rpcrt4/ndr_marshall.c b/reactos/lib/rpcrt4/ndr_marshall.c index 5354b428515..366ee78f3f9 100644 --- a/reactos/lib/rpcrt4/ndr_marshall.c +++ b/reactos/lib/rpcrt4/ndr_marshall.c @@ -562,6 +562,21 @@ unsigned char *WINAPI NdrConformantStringUnmarshall( PMIDL_STUB_MESSAGE pStubMsg 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 @@ void WINAPI PointerMarshall(PMIDL_STUB_MESSAGE pStubMsg, 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,20 +599,32 @@ void WINAPI PointerMarshall(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ void WINAPI PointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ void WINAPI PointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ void WINAPI PointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ unsigned long WINAPI PointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ unsigned long WINAPI PointerMemorySize(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ void WINAPI PointerFree(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ unsigned char * WINAPI NdrPointerMarshall(PMIDL_STUB_MESSAGE pStubMsg, pStubMsg->BufferMark = pStubMsg->Buffer; PointerMarshall(pStubMsg, pStubMsg->Buffer, pMemory, pFormat); - pStubMsg->Buffer += 4; STD_OVERFLOW_CHECK(pStubMsg); @@ -1104,7 +1148,6 @@ unsigned char * WINAPI NdrPointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, pStubMsg->BufferMark = pStubMsg->Buffer; PointerUnmarshall(pStubMsg, pStubMsg->Buffer, ppMemory, pFormat, fMustAlloc); - pStubMsg->Buffer += 4; return NULL; } @@ -1117,7 +1160,6 @@ void WINAPI NdrPointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat) { TRACE("(%p,%p,%p)\n", pStubMsg, pMemory, pFormat); - pStubMsg->BufferLength += 4; PointerBufferSize(pStubMsg, pMemory, pFormat); } diff --git a/reactos/lib/rpcrt4/ndr_midl.c b/reactos/lib/rpcrt4/ndr_midl.c index ba95835d197..65697aea8e2 100644 --- a/reactos/lib/rpcrt4/ndr_midl.c +++ b/reactos/lib/rpcrt4/ndr_midl.c @@ -185,6 +185,7 @@ void WINAPI NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE 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 @@ unsigned char *WINAPI NdrSendReceive( MIDL_STUB_MESSAGE *pStubMsg, unsigned char 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? */ diff --git a/reactos/lib/rpcrt4/ndr_ole.c b/reactos/lib/rpcrt4/ndr_ole.c index cda3dc163c7..baa3f07338a 100644 --- a/reactos/lib/rpcrt4/ndr_ole.c +++ b/reactos/lib/rpcrt4/ndr_ole.c @@ -79,7 +79,7 @@ static HMODULE LoadCOM(void) * (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 @@ static HRESULT WINAPI RpcStream_Read(LPSTREAM iface, 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 @@ static HRESULT WINAPI RpcStream_Write(LPSTREAM iface, 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 @@ static HRESULT WINAPI RpcStream_SetSize(LPSTREAM iface, return S_OK; } -static IStreamVtbl RpcStream_Vtbl = +static const IStreamVtbl RpcStream_Vtbl = { RpcStream_QueryInterface, RpcStream_AddRef, @@ -247,11 +254,15 @@ unsigned char * WINAPI NdrInterfacePointerMarshall(PMIDL_STUB_MESSAGE pStubMsg, 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 @@ unsigned char * WINAPI NdrInterfacePointerUnmarshall(PMIDL_STUB_MESSAGE pStubMsg 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 @@ void WINAPI NdrInterfacePointerBufferSize(PMIDL_STUB_MESSAGE pStubMsg, pStubMsg->dwDestContext, pStubMsg->pvDestContext, MSHLFLAGS_NORMAL); TRACE("size=%ld\n", size); - pStubMsg->BufferLength += sizeof(DWORD) + size; + if (size) pStubMsg->BufferLength += sizeof(DWORD) + size; } /*********************************************************************** diff --git a/reactos/lib/rpcrt4/rpc_binding.c b/reactos/lib/rpcrt4/rpc_binding.c index 02b7d9779d3..a4f0210808c 100644 --- a/reactos/lib/rpcrt4/rpc_binding.c +++ b/reactos/lib/rpcrt4/rpc_binding.c @@ -142,7 +142,7 @@ RPC_STATUS RPCRT4_OpenConnection(RpcConnection* Connection) 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 @@ RPC_STATUS RPCRT4_OpenConnection(RpcConnection* Connection) 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 @@ RPC_STATUS RPCRT4_CloseConnection(RpcConnection* Connection) { TRACE("(Connection == ^%p)\n", Connection); if (Connection->conn) { - CancelIo(Connection->conn); + FlushFileBuffers(Connection->conn); CloseHandle(Connection->conn); Connection->conn = 0; } diff --git a/reactos/lib/rpcrt4/rpc_server.c b/reactos/lib/rpcrt4/rpc_server.c index 20f6ca67301..13988a903cf 100644 --- a/reactos/lib/rpcrt4/rpc_server.c +++ b/reactos/lib/rpcrt4/rpc_server.c @@ -858,8 +858,11 @@ RPC_STATUS WINAPI RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, 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; diff --git a/reactos/lib/rpcrt4/rpcrt4.spec b/reactos/lib/rpcrt4/rpcrt4.spec index 4ddd84bbe40..29666eff7f5 100644 --- a/reactos/lib/rpcrt4/rpcrt4.spec +++ b/reactos/lib/rpcrt4/rpcrt4.spec @@ -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 -@ stub NdrTypeFlags # wxp -@ stub NdrTypeFree # wxp -@ stub NdrTypeMarshall # wxp -@ stub NdrTypeSize # wxp -@ stub NdrTypeUnmarshall # wxp -@ stub NdrUnmarshallBasetypeInline # wxp - -@ stub NdrByteCountPointerBufferSize -@ stub NdrByteCountPointerFree -@ stub NdrByteCountPointerMarshall -@ stub NdrByteCountPointerUnmarshall -@ stub NdrClientContextMarshall -@ stub NdrClientContextUnmarshall -@ 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 NdrEncapsulatedUnionBufferSize -@ stub NdrEncapsulatedUnionFree -@ stub NdrEncapsulatedUnionMarshall -@ stub NdrEncapsulatedUnionMemorySize -@ stub NdrEncapsulatedUnionUnmarshall -@ stub NdrFixedArrayBufferSize -@ stub NdrFixedArrayFree -@ stub NdrFixedArrayMarshall -@ stub NdrFixedArrayMemorySize -@ stub NdrFixedArrayUnmarshall -@ 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 NdrNonConformantStringBufferSize -@ stub NdrNonConformantStringMarshall -@ stub NdrNonConformantStringMemorySize -@ stub NdrNonConformantStringUnmarshall -@ stub NdrNonEncapsulatedUnionBufferSize -@ stub NdrNonEncapsulatedUnionFree -@ stub NdrNonEncapsulatedUnionMarshall -@ stub NdrNonEncapsulatedUnionMemorySize -@ stub NdrNonEncapsulatedUnionUnmarshall -@ 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) -@ stub NdrServerContextMarshall -@ stub NdrServerContextUnmarshall -@ stub NdrServerContextNewMarshall # wxp -@ stub NdrServerContextNewUnmarshall # wxp -@ 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) -@ 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 NDRCContextBinding -@ stub NDRCContextMarshall -@ stub NDRCContextUnmarshall -@ stub NDRSContextMarshall -@ stub NDRSContextUnmarshall -@ stub NDRSContextMarshallEx -@ stub NDRSContextUnmarshallEx -@ stub NDRSContextMarshall2 -@ stub NDRSContextUnmarshall2 -@ stub NDRcopy - -@ stub MIDL_wchar_strcpy -@ stub MIDL_wchar_strlen @ stub char_array_from_ndr @ stub char_from_ndr @ stub data_from_ndr @@ -459,123 +553,13 @@ @ stub long_array_from_ndr @ stub long_from_ndr @ stub long_from_ndr_temp +@ stub pfnFreeRoutines # wxp +@ stub pfnMarshallRouteines # wxp +@ stub pfnSizeRoutines # wxp +@ stub pfnUnmarshallRouteines # wxp @ stub short_array_from_ndr @ stub short_from_ndr @ stub short_from_ndr_temp @ stub tree_into_ndr @ stub tree_peek_ndr @ stub tree_size_ndr - -@ 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 -@ stub I_RpcBindingToStaticStringBindingW -@ stdcall I_RpcBindingSetAsync(ptr ptr) -# 9x version of I_RpcBindingSetAsync has 3 arguments, not 2 -@ stub I_RpcClearMutex -@ stub I_RpcConnectionInqSockBuffSize -@ stub I_RpcConnectionInqSockBuffSize2 -@ 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_RpcSetAsyncHandle -@ stub I_RpcSetAssociationContext # win9x -@ stub I_RpcSetServerContextList -@ stub I_RpcSetThreadParams # win9x -@ stub I_RpcSetWMsgEndpoint # NT4 -@ stub I_RpcSsDontSerializeContext -@ stub I_RpcSystemFunction001 # wxp (oh, brother!) -@ stub I_RpcStopMonitorAssociation -@ stub I_RpcTransCancelMigration # win9x -@ stub I_RpcTransClientMaxFrag # win9x -@ stub I_RpcTransClientReallocBuffer # win9x -@ stub I_RpcTransConnectionAllocatePacket -@ stub I_RpcTransConnectionFreePacket -@ stub I_RpcTransConnectionReallocPacket -@ stub I_RpcTransDatagramAllocate -@ stub I_RpcTransDatagramAllocate2 -@ 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 - -@ stdcall CreateProxyFromTypeInfo(ptr ptr ptr ptr ptr) -@ stub CreateStubFromTypeInfo -@ stub PerformRpcInitialization -@ stub StartServiceIfNecessary # win9x -@ stub GlobalMutexClearExternal -@ stub GlobalMutexRequestExternal