77 0, 0, { (
DWORD_PTR)(__FILE__
": server_cs") }
86 0, 0, { (
DWORD_PTR)(__FILE__
": listen_cs") }
95 0, 0, { (
DWORD_PTR)(__FILE__
": server_auth_info_cs") }
153 TRACE(
"returning %p for object %s, if_id { %d.%d %s }\n", cif,
173 unsigned int reject_reason;
206 unsigned char *auth_data,
ULONG auth_length,
RpcPktHdr **ack_response,
207 unsigned char **auth_data_out,
ULONG *auth_length_out)
215 for (
i = 0, ctxt_elem =
msg->Buffer;
216 i < hdr->num_elements;
219 if (((
char *)ctxt_elem - (
char *)
msg->Buffer) >
msg->BufferLength ||
222 ERR(
"inconsistent data in packet - packet length %d, num elements %d\n",
223 msg->BufferLength,
hdr->num_elements);
232 TRACE(
"packet size less than min size, or active interface syntax guid non-null\n");
243 i < hdr->num_elements;
259 TRACE(
"accepting bind request on connection %p for %s\n", conn,
273 TRACE(
"not accepting bind request on connection %p for %s - no transfer syntaxes supported\n",
281 TRACE(
"not accepting bind request on connection %p for %s - abstract syntax not supported\n",
312 auth_length, auth_data_out,
339 unsigned char *auth_data,
344 unsigned char *auth_data_out =
NULL;
345 ULONG auth_length_out = 0;
348 &response, &auth_data_out,
385 object_uuid = (
UUID*)(
hdr + 1);
400 msg->RpcInterfaceInformation = sif->
If;
403 if (object_uuid !=
NULL) {
408 msg->ProcNum =
hdr->opnum;
427 msg->DataRepresentation =
463 ERR(
"out of memory\n");
465 msg->RpcInterfaceInformation =
NULL;
478 unsigned char *auth_data,
484 !auth_length ||
msg->BufferLength != 0)
508 TRACE(
"got bind packet\n");
513 TRACE(
"got request packet\n");
518 TRACE(
"got auth3 packet\n");
522 FIXME(
"unhandled packet type %u\n",
hdr->common.ptype);
550 unsigned char *auth_data;
553 TRACE(
"(%p)\n", conn);
561 WARN(
"receive failed with error %x\n",
status);
566 switch (
hdr->common.ptype) {
568 TRACE(
"got bind packet\n");
575 TRACE(
"got request packet\n");
588 packet->auth_data = auth_data;
589 packet->auth_length = auth_length;
591 ERR(
"couldn't queue work item for worker thread, error was %d\n",
GetLastError());
600 TRACE(
"got auth3 packet\n");
606 FIXME(
"unhandled packet type %u\n",
hdr->common.ptype);
616 WARN(
"processing packet failed with error %u\n",
status);
630 ERR(
"failed to create thread, error=%08x\n",
err);
650 TRACE(
"(the_arg == ^%p)\n", the_arg);
653 objs = cps->
ops->get_wait_array(cps, objs, &
count);
659 set_ready_event =
FALSE;
663 res = cps->
ops->wait_for_new_connection(cps,
count, objs);
668 cps->
ops->free_wait_array(cps, objs);
672 set_ready_event =
TRUE;
675 TRACE(
"closing connections\n");
690 TRACE(
"waiting for active connections to close\n");
715 ps->
ops->signal_state_changed(ps);
869 TRACE(
"(*BindingVector == ^%p)\n", *BindingVector);
871 ERR(
"(BindingVector == NULL!!?)\n");
887 (*BindingVector)->Count =
count;
900 *BindingVector =
NULL;
959 (*ps)->MaxCalls = MaxCalls;
965 (*ps)->cs.DebugInfo->Spare[0] = (
DWORD_PTR)(__FILE__
": RpcServerProtseq.cs");
969 TRACE(
"new protseq %p created for %s\n", *ps, Protseq);
997 TRACE(
"found existing protseq object for %s\n", Protseq);
1019 TRACE(
"(%s,%u,%s,%p,{%u,%u,%u})\n",
debugstr_a((
const char *)Protseq),
1128 TRACE(
"(%p,%s,%p,%u,%u,%p)\n", IfSpec,
debugstr_guid(MgrTypeUuid), MgrEpv,
Flags, MaxCalls, IfCallbackFn);
1151 TRACE(
"(%p,%s,%p,%u,%u,%u,%p,%p)\n", IfSpec,
debugstr_guid(MgrTypeUuid), MgrEpv,
Flags, MaxCalls,
1155 FIXME(
"Unsupported SecurityDescriptor argument.\n");
1211 TRACE(
"(IfSpec == (RPC_IF_HANDLE)^%p (%s), MgrTypeUuid == %s, WaitForCallsToComplete == %u)\n",
1220 TRACE(
"unregistering cif %p\n", cif);
1224 if (WaitForCallsToComplete)
1255 FIXME(
"(IfSpec == (RPC_IF_HANDLE)^%p, MgrTypeUuid == %s, RundownContextHandles == %d): stub\n",
1302 prev->next =
map->next;
1313 map->Object = *ObjUuid;
1314 map->Type = *TypeUuid;
1338 ULONG package_count;
1344 ERR(
"EnumerateSecurityPackagesW failed with error 0x%08x\n", sec_status);
1348 for (
i = 0;
i < package_count;
i++)
1349 if (packages[
i].wRPCID == auth_type)
1352 if (
i == package_count)
1354 WARN(
"unsupported AuthnSvc %u\n", auth_type);
1360 *packages_buf = packages;
1361 *
ret = packages +
i;
1420 TRACE(
"(%s,%u,%p,%p)\n", ServerPrincName, AuthnSvc, GetKeyFn, Arg);
1422 if(ServerPrincName && !(principal_name =
RPCRT4_strdupAtoW((
const char*)ServerPrincName)))
1443 TRACE(
"(%s,%u,%p,%p)\n",
debugstr_w(ServerPrincName), AuthnSvc, GetKeyFn, Arg);
1486 TRACE(
"%u, %p\n", AuthnSvc, PrincName);
1503 FIXME(
"%u, %p\n", AuthnSvc, PrincName);
1524 TRACE(
"(%u,%u,%u)\n", MinimumCallThreads, MaxCalls, DontWait);
1553 TRACE(
"waiting for server calls to finish\n" );
1555 TRACE(
"done waiting\n" );
1598 TRACE(
"(Binding == (RPC_BINDING_HANDLE)^%p)\n",
Binding);
1601 FIXME(
"client-side invocation not implemented.\n");
1613 FIXME(
"(): stub\n");
1632 FIXME(
"(): stub\n" );
1668 stats->
Stats[0] = 0;
1669 *Statistics = stats;
1680 FIXME(
"(%p)\n", StatsVector);
1685 *StatsVector =
NULL;
1696 FIXME(
"(%p,%u,%p,%u,%p,%p): stub\n",
1697 Binding, InquiryType, IfId, VersOption, ObjectUuid, InquiryContext);
1736 FIXME(
"(0x%x): stub\n", ThreadStackSize);
static RPC_STATUS RPCRT4_get_or_create_serverprotseq(UINT MaxCalls, const char *Protseq, RpcServerProtseq **ps)
USHORT MaxTransmissionSize
void const * InterpreterInfo
RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN(RPC_IF_HANDLE InterfaceUuid, void *Context)
WINE_DEFAULT_DEBUG_CHANNEL(rpc)
#define RPC_C_AUTHN_WINNT
HANDLE server_ready_event
RPC_STATUS WINAPI RpcServerUseProtseqEpExA(RPC_CSTR Protseq, UINT MaxCalls, RPC_CSTR Endpoint, LPVOID SecurityDescriptor, PRPC_POLICY lpPolicy)
#define RESULT_PROVIDER_REJECTION
RpcPktHdr * RPCRT4_BuildBindNackHeader(ULONG DataRepresentation, unsigned char RpcVersion, unsigned char RpcVersionMinor, unsigned short RejectReason)
static struct list protseqs
static RpcServerInterface * RPCRT4_find_interface(UUID *object, const RPC_SYNTAX_IDENTIFIER *if_id, const RPC_SYNTAX_IDENTIFIER *transfer_syntax, BOOL check_object)
RPC_STATUS WINAPI I_RpcServerStopListening(void)
static const char * rpcrt4_conn_get_name(const RpcConnection *Connection)
PRPC_DISPATCH_TABLE DispatchTable
RPC_STATUS WINAPI RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding)
#define RPC_S_INVALID_BOUND
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
RpcServerProtseq *(* alloc)(void)
SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
RPC_STATUS WINAPI RpcMgmtInqIfIds(RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR **IfIdVector)
void WINAPI I_RpcFree(void *Object)
unsigned short MajorVersion
unsigned char * auth_data
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
SECURITY_STATUS WINAPI FreeContextBuffer(PVOID pv)
static GLenum _GLUfuncptr fn
static RPC_STATUS RPCRT4_use_protseq(RpcServerProtseq *ps, const char *endpoint)
struct _RpcPacket RpcPacket
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
static void RPCRT4_process_packet(RpcConnection *conn, RpcPktHdr *hdr, RPC_MESSAGE *msg, unsigned char *auth_data, ULONG auth_length)
#define REJECT_LOCAL_LIMIT_EXCEEDED
GLuint GLuint GLsizei count
static BOOL RPCRT4_protseq_is_endpoint_registered(RpcServerProtseq *protseq, const char *endpoint)
void(__RPC_STUB * RPC_DISPATCH_FUNCTION)(PRPC_MESSAGE Message)
#define RPC_S_NO_BINDINGS
#define RPC_S_NO_PROTSEQS_REGISTERED
#define RPC_S_WRONG_KIND_OF_BINDING
#define NCA_S_OP_RNG_ERROR
static CRITICAL_SECTION server_auth_info_cs
VOID RPCRT4_FreeHeader(RpcPktHdr *Header)
RPC_STATUS WINAPI RpcMgmtSetAuthorizationFn(RPC_MGMT_AUTHORIZATION_FN fn)
__WINE_SERVER_LIST_INLINE void list_add_head(struct list *list, struct list *elem)
RPC_STATUS WINAPI I_RpcServerStartListening(HWND hWnd)
void RPCRT4_new_client(RpcConnection *conn)
RPC_STATUS WINAPI RpcServerUseProtseqW(RPC_WSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor)
static RPC_STATUS RPCRT4_start_listen_protseq(RpcServerProtseq *ps, BOOL auto_listen)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
DWORD WINAPI GetLastError(VOID)
#define REJECT_UNKNOWN_AUTHN_SERVICE
DWORD WINAPI GetThreadId(IN HANDLE Thread)
SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG pcPackages, PSecPkgInfoW *ppPackageInfo)
int(__RPC_API * RPC_MGMT_AUTHORIZATION_FN)(RPC_BINDING_HANDLE, ULONG, RPC_STATUS *)
int WINAPI UuidEqual(UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status)
unsigned short * RPC_WSTR
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
RpcPktHdr * RPCRT4_BuildFaultHeader(ULONG DataRepresentation, RPC_STATUS Status)
#define RPC_IF_AUTOLISTEN
RPC_STATUS WINAPI RpcServerUnregisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, UINT WaitForCallsToComplete)
static CRITICAL_SECTION server_cs
RPC_STATUS WINAPI RpcMgmtSetServerStackSize(ULONG ThreadStackSize)
LPSTR RPCRT4_strdupWtoA(LPCWSTR src)
static UUID * LookupObjType(UUID *ObjUuid)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
__WINE_SERVER_LIST_INLINE struct list * list_head(const struct list *list)
WDF_INTERRUPT_POLICY policy
RPC_STATUS WINAPI RpcServerRegisterAuthInfoW(RPC_WSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, LPVOID Arg)
#define REJECT_TEMPORARY_CONGESTION
int WINAPI UuidCompare(UUID *Uuid1, UUID *Uuid2, RPC_STATUS *Status)
RPC_DISPATCH_FUNCTION * DispatchTable
RPC_STATUS WINAPI RpcServerRegisterIfEx(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, UINT Flags, UINT MaxCalls, RPC_IF_CALLBACK_FN *IfCallbackFn)
RPC_STATUS WINAPI RpcServerUseProtseqA(RPC_CSTR Protseq, unsigned int MaxCalls, void *SecurityDescriptor)
__WINE_SERVER_LIST_INLINE void list_add_tail(struct list *list, struct list *elem)
static DWORD CALLBACK RPCRT4_worker_thread(LPVOID the_arg)
GLenum GLuint GLenum GLsizei const GLchar * buf
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
RPC_SYNTAX_IDENTIFIER InterfaceId
int WINAPI UuidIsNil(UUID *Uuid, RPC_STATUS *Status)
RpcConnection * RPCRT4_GrabConnection(RpcConnection *conn) DECLSPEC_HIDDEN
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
void RPCRT4_destroy_all_protseqs(void)
#define RPC_S_INVALID_OBJECT
const struct protseq_ops * rpcrt4_get_protseq_ops(const char *protseq) DECLSPEC_HIDDEN
HANDLE CallsCompletedEvent
void RPCRT4_strfree(LPSTR src)
#define ERROR_ACCESS_DENIED
#define RPC_S_OUT_OF_MEMORY
RPC_STATUS WINAPI RpcServerUseProtseqEpExW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor, PRPC_POLICY lpPolicy)
struct _RpcConnection * conn
static void rpcrt4_conn_close_read(RpcConnection *connection)
const struct protseq_ops * ops
RPC_STATUS WINAPI RpcServerListen(UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait)
#define REJECT_REASON_NOT_SPECIFIED
static CRITICAL_SECTION_DEBUG server_cs_debug
unsigned char num_syntaxes
RPC_STATUS WINAPI RpcServerUnregisterIfEx(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, int RundownContextHandles)
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT
RPC_MGR_EPV * DefaultManagerEpv
#define SECPKG_CRED_INBOUND
#define RPC_S_SEC_PKG_ERROR
RPC_IF_CALLBACK_FN * IfCallbackFn
unsigned int DispatchTableCount
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
RPC_VERSION SyntaxVersion
#define RPC_S_INVALID_BINDING
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
UINT WINAPI I_RpcWindowProc(void *hWnd, UINT Message, UINT wParam, ULONG lParam)
static CRITICAL_SECTION_DEBUG listen_cs_debug
#define RPC_S_NOT_LISTENING
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static RPC_STATUS process_request_packet(RpcConnection *conn, RpcPktRequestHdr *hdr, RPC_MESSAGE *msg)
static struct list server_registered_auth_info
#define RPC_S_PROTOCOL_ERROR
RPC_SYNTAX_IDENTIFIER TransferSyntax
RPC_STATUS RPCRT4_IsServerListening(const char *protseq, const char *endpoint) DECLSPEC_HIDDEN
void RPCRT4_ReleaseConnection(RpcConnection *Connection) DECLSPEC_HIDDEN
__WINE_SERVER_LIST_INLINE void list_remove(struct list *elem)
#define RPC_S_PROTSEQ_NOT_SUPPORTED
void(__RPC_USER * RPC_AUTH_KEY_RETRIEVAL_FN)(void *, RPC_WSTR, ULONG, void **, RPC_STATUS *)
#define WT_EXECUTELONGFUNCTION
void rpcrt4_conn_release_and_wait(RpcConnection *connection) DECLSPEC_HIDDEN
RPC_STATUS WINAPI RpcMgmtEnableIdleCleanup(void)
_Must_inspect_result_ _In_ ULONG Flags
RPC_STATUS WINAPI RpcServerInqBindings(RPC_BINDING_VECTOR **BindingVector)
static DWORD CALLBACK RPCRT4_server_thread(LPVOID the_arg)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
NCA_STATUS RPC2NCA_STATUS(RPC_STATUS status)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
RpcPktHdr * RPCRT4_BuildBindAckHeader(ULONG DataRepresentation, unsigned short MaxTransmissionSize, unsigned short MaxReceiveSize, ULONG AssocGroupId, LPCSTR ServerAddress, unsigned char ResultCount, const RpcResult *Results)
NDR_SCONTEXT RPCRT4_PopThreadContextHandle(void) DECLSPEC_HIDDEN
RPC_STATUS WINAPI RpcServerUseProtseqEpA(RPC_CSTR Protseq, UINT MaxCalls, RPC_CSTR Endpoint, LPVOID SecurityDescriptor)
#define RPC_MIN_PACKET_SIZE
#define REJECT_INVALID_CHECKSUM
static CRITICAL_SECTION_DEBUG server_auth_info_cs_debug
RPC_STATUS WINAPI RpcMgmtInqStats(RPC_BINDING_HANDLE Binding, RPC_STATS_VECTOR **Statistics)
#define RPC_FLG_OBJECT_UUID
RPC_STATUS WINAPI RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
struct _RpcObjTypeMap RpcObjTypeMap
RPC_STATUS RPCRT4_ReceiveWithAuth(RpcConnection *Connection, RpcPktHdr **Header, PRPC_MESSAGE pMsg, unsigned char **auth_data_out, ULONG *auth_length_out)
static RPC_STATUS RPCRT4_stop_listen(BOOL auto_listen)
static void RPCRT4_sync_with_server_thread(RpcServerProtseq *ps)
static struct _test_info results[8]
PCRITICAL_SECTION_DEBUG DebugInfo
LPWSTR RPCRT4_strdupAtoW(LPCSTR src)
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
BOOL WINAPI QueueUserWorkItem(IN LPTHREAD_START_ROUTINE Function, IN PVOID Context, IN ULONG Flags)
static RpcPktHdr * handle_bind_error(RpcConnection *conn, RPC_STATUS error)
RPC_STATUS RPCRT4_ServerConnectionAuth(RpcConnection *conn, BOOL start, RpcAuthVerifier *auth_data_in, ULONG auth_length_in, unsigned char **auth_data_out, ULONG *auth_length_out)
#define InterlockedDecrement
static RPC_STATUS process_bind_packet(RpcConnection *conn, RpcPktBindHdr *hdr, RPC_MESSAGE *msg, unsigned char *auth_data, ULONG auth_length)
struct _RpcObjTypeMap * next
unsigned short MinorVersion
#define RPC_S_UNKNOWN_AUTHN_SERVICE
RPC_STATUS RPCRT4_MakeBinding(RpcBinding **Binding, RpcConnection *Connection)
RPC_STATUS RPCRT4_SendWithAuth(RpcConnection *Connection, RpcPktHdr *Header, void *Buffer, unsigned int BufferLength, const void *Auth, unsigned int AuthLength)
static void RPCRT4_release_server_interface(RpcServerInterface *sif)
static CRITICAL_SECTION listen_cs
LIST_ENTRY ProcessLocksList
#define RPC_S_INTERNAL_ERROR
RPC_SERVER_INTERFACE * If
RPC_BINDING_HANDLE WINAPI I_RpcGetCurrentCallHandle(void)
struct _RpcBinding * server_binding
static RPC_STATUS process_auth3_packet(RpcConnection *conn, RpcPktCommonHdr *hdr, RPC_MESSAGE *msg, unsigned char *auth_data, ULONG auth_length)
#define RPC_S_ALREADY_LISTENING
static HANDLE listen_done_event
#define RPC_S_SERVER_TOO_BUSY
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
RPC_STATUS RPCRT4_ServerGetRegisteredAuthInfo(USHORT auth_type, CredHandle *cred, TimeStamp *exp, ULONG *max_token)
unsigned int RpcServerAssoc_ReleaseContextHandle(RpcAssoc *assoc, NDR_SCONTEXT SContext, BOOL release_lock)
__WINE_SERVER_LIST_INLINE int list_empty(const struct list *list)
#define NDR_LOCAL_DATA_REPRESENTATION
RPC_SYNTAX_IDENTIFIER transfer_syntaxes[ANYSIZE_ARRAY]
RPC_STATUS RPCRT4_SetBindingObject(RpcBinding *Binding, const UUID *ObjectUuid)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define InterlockedIncrement
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static RpcObjTypeMap * LookupObjTypeMap(UUID *ObjUuid)
#define STATUS_ACCESS_VIOLATION
#define RPCRT4_strdupA(x)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexW(IN LPSECURITY_ATTRIBUTES lpMutexAttributes OPTIONAL, IN BOOL bInitialOwner, IN LPCWSTR lpName OPTIONAL)
RPC_STATUS RPCRT4_Send(RpcConnection *Connection, RpcPktHdr *Header, void *Buffer, unsigned int BufferLength)
void RPCRT4_ServerFreeAllRegisteredAuthInfo(void)
#define RPC_S_OUT_OF_RESOURCES
RPC_STATUS WINAPI RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding)
RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameW(ULONG AuthnSvc, RPC_WSTR *PrincName)
BOOLEAN WINAPI GetUserNameExW(EXTENDED_NAME_FORMAT NameFormat, LPWSTR lpNameBuffer, PULONG nSize)
RPC_STATUS RpcServerAssoc_GetAssociation(LPCSTR Protseq, LPCSTR NetworkAddr, LPCSTR Endpoint, LPCWSTR NetworkOptions, ULONG assoc_gid, RpcAssoc **assoc_out)
#define REASON_ABSTRACT_SYNTAX_NOT_SUPPORTED
#define REASON_TRANSFER_SYNTAXES_NOT_SUPPORTED
__WINE_SERVER_LIST_INLINE void list_init(struct list *list)
#define RPC_MAX_PACKET_SIZE
RPC_STATUS WINAPI RpcMgmtStatsVectorFree(RPC_STATS_VECTOR **StatsVector)
static struct list server_interfaces
RPC_STATUS RPCRT4_CloseConnection(RpcConnection *Connection) DECLSPEC_HIDDEN
RPC_STATUS WINAPI RpcMgmtEpEltInqBegin(RPC_BINDING_HANDLE Binding, ULONG InquiryType, RPC_IF_ID *IfId, ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext)
int strcmp(const char *String1, const char *String2)
RPC_STATUS WINAPI RpcMgmtWaitServerListen(void)
void RPCRT4_SetThreadCurrentCallHandle(RpcBinding *Binding) DECLSPEC_HIDDEN
RPC_SYNTAX_IDENTIFIER abstract_syntax
I_RPC_HANDLE RPC_BINDING_HANDLE
static RPC_STATUS RPCRT4_start_listen(BOOL auto_listen)
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define GetExceptionCode()
static RPC_STATUS process_bind_packet_no_send(RpcConnection *conn, RpcPktBindHdr *hdr, RPC_MESSAGE *msg, unsigned char *auth_data, ULONG auth_length, RpcPktHdr **ack_response, unsigned char **auth_data_out, ULONG *auth_length_out)
RPC_STATUS WINAPI RpcServerRegisterIf3(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, UINT Flags, UINT MaxCalls, UINT MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn, void *SecurityDescriptor)
RPC_STATUS WINAPI RpcObjectSetType(UUID *ObjUuid, UUID *TypeUuid)
static RPC_STATUS alloc_serverprotoseq(UINT MaxCalls, const char *Protseq, RpcServerProtseq **ps)
#define RPCRT4_strdupW(x)
static DWORD CALLBACK RPCRT4_io_thread(LPVOID the_arg)
static SERVICE_STATUS status
static RPC_STATUS find_security_package(ULONG auth_type, SecPkgInfoW **packages_buf, SecPkgInfoW **ret)
static void destroy_serverprotoseq(RpcServerProtseq *ps)
RPC_STATUS WINAPI RpcServerRegisterAuthInfoA(RPC_CSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn, LPVOID Arg)
RpcBinding * RPCRT4_GetThreadCurrentCallHandle(void) DECLSPEC_HIDDEN
#define REJECT_PROTOCOL_VERSION_NOT_SUPPORTED
#define HeapFree(x, y, z)
RpcPktHdr * RPCRT4_BuildResponseHeader(ULONG DataRepresentation, ULONG BufferLength)
RPC_STATUS WINAPI RpcServerRegisterIf2(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv, UINT Flags, UINT MaxCalls, UINT MaxRpcSize, RPC_IF_CALLBACK_FN *IfCallbackFn)
RPC_STATUS RPC_ENTRY RpcServerInqDefaultPrincNameA(ULONG AuthnSvc, RPC_CSTR *PrincName)
#define RPC_S_ALREADY_REGISTERED
DWORD_PTR Spare[8/sizeof(DWORD_PTR)]
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum map
RPC_SYNTAX_IDENTIFIER ActiveInterface
static RpcObjTypeMap * RpcObjTypeMaps
unsigned int RpcProtseqEndpointCount