Sync with trunk (r48545)
[reactos.git] / include / psdk / rpcdce.h
index 473a799..439f164 100644 (file)
@@ -54,14 +54,14 @@ typedef RPC_BINDING_HANDLE handle_t;
 
 typedef struct _RPC_BINDING_VECTOR
 {
-  unsigned long Count;
+  ULONG Count;
   RPC_BINDING_HANDLE BindingH[1];
 } RPC_BINDING_VECTOR;
 #define rpc_binding_vector_t RPC_BINDING_VECTOR
 
 typedef struct _UUID_VECTOR
 {
-  unsigned long Count;
+  ULONG Count;
   UUID *Uuid[1];
 } UUID_VECTOR;
 #define uuid_vector_t UUID_VECTOR
@@ -75,10 +75,16 @@ typedef struct _RPC_IF_ID
 
 typedef struct
 {
-  unsigned long Count;
+  ULONG Count;
   RPC_IF_ID *IfId[1];
 } RPC_IF_ID_VECTOR;
 
+typedef struct
+{
+  unsigned int Count;
+  ULONG Stats[1];
+} RPC_STATS_VECTOR;
+
 typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
 
 #define RPC_C_EP_ALL_ELTS 0
@@ -102,6 +108,11 @@ typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
 #define RPC_C_LISTEN_MAX_CALLS_DEFAULT 1234
 #define RPC_C_PROTSEQ_MAX_REQS_DEFAULT 10
 
+#define RPC_PROTSEQ_TCP     0x1
+#define RPC_PROTSEQ_NMP     0x2
+#define RPC_PROTSEQ_LRPC    0x3
+#define RPC_PROTSEQ_HTTP    0x4
+
 /* RPC_POLICY EndpointFlags */
 #define RPC_C_BIND_TO_ALL_NICS          0x1
 #define RPC_C_USE_INTERNET_PORT         0x1
@@ -139,6 +150,11 @@ typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
 #define RPC_C_AUTHN_MQ 100
 #define RPC_C_AUTHN_DEFAULT 0xffffffff
 
+#define RPC_C_AUTHZ_NONE 0
+#define RPC_C_AUTHZ_NAME 1
+#define RPC_C_AUTHZ_DCE  2
+#define RPC_C_AUTHZ_DEFAULT 0xffffffff
+
 /* values for RPC_SECURITY_QOS*::ImpersonationType */
 #define RPC_C_IMP_LEVEL_DEFAULT     0
 #define RPC_C_IMP_LEVEL_ANONYMOUS   1
@@ -147,8 +163,8 @@ typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
 #define RPC_C_IMP_LEVEL_DELEGATE    4
 
 /* values for RPC_SECURITY_QOS*::IdentityTracking */
-#define RPC_C_QOS_IDENTIFY_STATIC   0
-#define RPC_C_QOS_IDENTIFY_DYNAMIC  1
+#define RPC_C_QOS_IDENTITY_STATIC   0
+#define RPC_C_QOS_IDENTITY_DYNAMIC  1
 
 /* flags for RPC_SECURITY_QOS*::Capabilities */
 #define RPC_C_QOS_CAPABILITIES_DEFAULT          0x0
@@ -179,71 +195,71 @@ typedef I_RPC_HANDLE *RPC_EP_INQ_HANDLE;
 #define RPC_C_HTTP_AUTHN_SCHEME_NEGOTIATE   0x10
 
 typedef RPC_STATUS RPC_ENTRY RPC_IF_CALLBACK_FN( RPC_IF_HANDLE InterfaceUuid, void *Context );
-typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)();
+typedef void (__RPC_USER *RPC_AUTH_KEY_RETRIEVAL_FN)(void *, RPC_WSTR, ULONG, void **, RPC_STATUS *);
 
 typedef struct _RPC_POLICY
 {
   unsigned int  Length;
-  unsigned long EndpointFlags;
-  unsigned long NICFlags;
+  ULONG EndpointFlags;
+  ULONG NICFlags;
 } RPC_POLICY,  *PRPC_POLICY;
 
 typedef struct _SEC_WINNT_AUTH_IDENTITY_W
 {
     unsigned short* User;
-    unsigned long UserLength;
+    ULONG UserLength;
     unsigned short* Domain;
-    unsigned long DomainLength;
+    ULONG DomainLength;
     unsigned short* Password;
-    unsigned long PasswordLength;
-    unsigned long Flags;
+    ULONG PasswordLength;
+    ULONG Flags;
 } SEC_WINNT_AUTH_IDENTITY_W, *PSEC_WINNT_AUTH_IDENTITY_W;
 
 typedef struct _SEC_WINNT_AUTH_IDENTITY_A
 {
     unsigned char* User;
-    unsigned long UserLength;
+    ULONG UserLength;
     unsigned char* Domain;
-    unsigned long DomainLength;
+    ULONG DomainLength;
     unsigned char* Password;
-    unsigned long PasswordLength;
-    unsigned long Flags;
+    ULONG PasswordLength;
+    ULONG Flags;
 } SEC_WINNT_AUTH_IDENTITY_A, *PSEC_WINNT_AUTH_IDENTITY_A;
 
 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W
 {
     SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
-    unsigned long Flags;
-    unsigned long AuthenticationTarget;
-    unsigned long NumberOfAuthnSchemes;
-    unsigned long *AuthnSchemes;
+    ULONG Flags;
+    ULONG AuthenticationTarget;
+    ULONG NumberOfAuthnSchemes;
+    ULONG *AuthnSchemes;
     unsigned short *ServerCertificateSubject;
 } RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;
 
 typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A
 {
     SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
-    unsigned long Flags;
-    unsigned long AuthenticationTarget;
-    unsigned long NumberOfAuthnSchemes;
-    unsigned long *AuthnSchemes;
+    ULONG Flags;
+    ULONG AuthenticationTarget;
+    ULONG NumberOfAuthnSchemes;
+    ULONG *AuthnSchemes;
     unsigned char *ServerCertificateSubject;
 } RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;
 
 typedef struct _RPC_SECURITY_QOS {
-    unsigned long Version;
-    unsigned long Capabilities;
-    unsigned long IdentityTracking;
-    unsigned long ImpersonationType;
+    ULONG Version;
+    ULONG Capabilities;
+    ULONG IdentityTracking;
+    ULONG ImpersonationType;
 } RPC_SECURITY_QOS, *PRPC_SECURITY_QOS;
 
 typedef struct _RPC_SECURITY_QOS_V2_W
 {
-    unsigned long Version;
-    unsigned long Capabilities;
-    unsigned long IdentityTracking;
-    unsigned long ImpersonationType;
-    unsigned long AdditionalSecurityInfoType;
+    ULONG Version;
+    ULONG Capabilities;
+    ULONG IdentityTracking;
+    ULONG ImpersonationType;
+    ULONG AdditionalSecurityInfoType;
     union
     {
         RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
@@ -252,11 +268,11 @@ typedef struct _RPC_SECURITY_QOS_V2_W
 
 typedef struct _RPC_SECURITY_QOS_V2_A
 {
-    unsigned long Version;
-    unsigned long Capabilities;
-    unsigned long IdentityTracking;
-    unsigned long ImpersonationType;
-    unsigned long AdditionalSecurityInfoType;
+    ULONG Version;
+    ULONG Capabilities;
+    ULONG IdentityTracking;
+    ULONG ImpersonationType;
+    ULONG AdditionalSecurityInfoType;
     union
     {
         RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
@@ -280,10 +296,13 @@ typedef struct _RPC_SECURITY_QOS_V2_A
 #define SEC_WINNT_AUTH_IDENTITY_UNICODE 0x2
 
 /* RpcServerRegisterIfEx Flags */
-#define RPC_IF_AUTOLISTEN               0x1
-#define RPC_IF_OLE                      0x2
-#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY  0x4
-#define RPC_IF_ALLOW_SECURE_ONLY        0x8
+#define RPC_IF_AUTOLISTEN                   0x01
+#define RPC_IF_OLE                          0x02
+#define RPC_IF_ALLOW_UNKNOWN_AUTHORITY      0x04
+#define RPC_IF_ALLOW_SECURE_ONLY            0x08
+#define RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH 0x10
+#define RPC_IF_ALLOW_LOCAL_ONLY             0x20
+#define RPC_IF_SEC_NO_CACHE                 0x40
 
 RPC_STATUS RPC_ENTRY DceErrorInqTextA(RPC_STATUS e, RPC_CSTR buffer);
 RPC_STATUS RPC_ENTRY DceErrorInqTextW(RPC_STATUS e, RPC_WSTR buffer);
@@ -300,10 +319,14 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
 
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingInqObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR *OptionValue );
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingReset( RPC_BINDING_HANDLE Binding );
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingSetObject( RPC_BINDING_HANDLE Binding, UUID* ObjectUuid );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingSetOption( RPC_BINDING_HANDLE Binding, ULONG Option, ULONG_PTR OptionValue );
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcObjectSetType( UUID* ObjUuid, UUID* TypeUuid );
 
@@ -317,7 +340,7 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingToStringBindingA( RPC_BINDING_HANDLE Binding, RPC_CSTR *StringBinding );
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingToStringBindingW( RPC_BINDING_HANDLE Binding, RPC_WSTR *StringBinding );
-#define RpcBindingFromStringBinding WINELIB_NAME_AW(RpcBindingFromStringBinding)
+#define RpcBindingToStringBinding WINELIB_NAME_AW(RpcBindingToStringBinding)
 
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcBindingVectorFree( RPC_BINDING_VECTOR** BindingVector );
@@ -367,14 +390,23 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcServerListen( unsigned int MinimumCallThreads, unsigned int MaxCalls, unsigned int DontWait );
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtEnableIdleCleanup( void );
+
 RPCRTAPI RPC_STATUS RPC_ENTRY RpcMgmtSetCancelTimeout(LONG);
 
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcMgmtWaitServerListen( void );
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtInqStats( RPC_BINDING_HANDLE Binding, RPC_STATS_VECTOR **Statistics );
+
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcMgmtStopServerListening( RPC_BINDING_HANDLE Binding );
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtIsServerListening(RPC_BINDING_HANDLE Binding);
+
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcMgmtInqIfIds( RPC_BINDING_HANDLE Binding, RPC_IF_ID_VECTOR** IfIdVector );
 
@@ -382,6 +414,15 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcMgmtEpEltInqBegin( RPC_BINDING_HANDLE EpBinding, ULONG InquiryType, RPC_IF_ID *IfId,
                         ULONG VersOption, UUID *ObjectUuid, RPC_EP_INQ_HANDLE *InquiryContext);
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtSetComTimeout( RPC_BINDING_HANDLE Binding, unsigned int Timeout );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcMgmtSetServerStackSize( ULONG ThreadStackSize );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+RpcMgmtStatsVectorFree( RPC_STATS_VECTOR **StatsVector );
+
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv );
 
@@ -468,7 +509,33 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
                           ULONG *AuthnSvc, RPC_AUTH_IDENTITY_HANDLE *AuthIdentity, ULONG *AuthzSvc );
 #define RpcBindingInqAuthInfo WINELIB_NAME_AW(RpcBindingInqAuthInfo)
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthClientA( RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs,
+                            RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc,
+                            ULONG *AuthzSvc );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthClientW( RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs,
+                            RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc,
+                            ULONG *AuthzSvc );
+#define RpcBindingInqAuthClient WINELIB_NAME_AW(RpcBindingInqAuthClient)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthClientExA( RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs,
+                              RPC_CSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc,
+                              ULONG *AuthzSvc, ULONG Flags );
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcBindingInqAuthClientExW( RPC_BINDING_HANDLE ClientBinding, RPC_AUTHZ_HANDLE *Privs,
+                              RPC_WSTR *ServerPrincName, ULONG *AuthnLevel, ULONG *AuthnSvc,
+                              ULONG *AuthzSvc, ULONG Flags );
+#define RpcBindingInqAuthClientEx WINELIB_NAME_AW(RpcBindingInqAuthClientEx)
+
 RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThread(void*);
+RPCRTAPI RPC_STATUS RPC_ENTRY RpcCancelThreadEx(void*,LONG);
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcImpersonateClient( RPC_BINDING_HANDLE Binding );
 
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcNetworkIsProtseqValidA( RPC_CSTR protseq );
@@ -476,6 +543,11 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcNetworkIsProtseqValidW( RPC_WSTR protseq );
 #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
 
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcRevertToSelf( void );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcRevertToSelfEx( RPC_BINDING_HANDLE Binding );
+
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcStringFreeA(RPC_CSTR* String);
 RPCRTAPI RPC_STATUS RPC_ENTRY
@@ -509,13 +581,6 @@ RPCRTAPI unsigned short RPC_ENTRY
 RPCRTAPI int RPC_ENTRY
   UuidIsNil( UUID* Uuid, RPC_STATUS* Status_ );
 
-
-RPCRTAPI RPC_STATUS RPC_ENTRY
-RpcImpersonateClient (IN RPC_BINDING_HANDLE BindingHandle OPTIONAL);
-
-RPCRTAPI RPC_STATUS RPC_ENTRY
-RpcRevertToSelf ();
-
 #ifdef __cplusplus
 }
 #endif