Damjan Jovanovic : rpcrt4: Implement RpcNetworkInqProtseqs.

Alexandre Julliard julliard at winehq.org
Tue Jun 28 17:25:18 CDT 2011


Module: wine
Branch: master
Commit: ec2f51369092c5bce9093a0f8dc342d4889896f4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ec2f51369092c5bce9093a0f8dc342d4889896f4

Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date:   Thu Jun 23 07:15:40 2011 +0200

rpcrt4: Implement RpcNetworkInqProtseqs.

---

 dlls/rpcrt4/rpc_server.c    |   18 ------------
 dlls/rpcrt4/rpc_transport.c |   65 +++++++++++++++++++++++++++++++++++++++++++
 include/rpcdce.h            |    6 ++++
 3 files changed, 71 insertions(+), 18 deletions(-)

diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index 3a9ecf8..9fd4cf6 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -825,24 +825,6 @@ static RPC_STATUS RPCRT4_use_protseq(RpcServerProtseq* ps, const char *endpoint)
 }
 
 /***********************************************************************
- *             RpcNetworkInqProtseqsA (RPCRT4.@)
- */
-RPC_STATUS WINAPI RpcNetworkInqProtseqsA( RPC_PROTSEQ_VECTORA* ProtSeqVector )
-{
-    FIXME("(%p): stub\n", ProtSeqVector);
-    return RPC_S_NO_PROTSEQS_REGISTERED;
-}
-
-/***********************************************************************
- *             RpcNetworkInqProtseqsW (RPCRT4.@)
- */
-RPC_STATUS WINAPI RpcNetworkInqProtseqsW( RPC_PROTSEQ_VECTORW* ProtSeqVector )
-{
-    FIXME("(%p): stub\n", ProtSeqVector);
-    return RPC_S_NO_PROTSEQS_REGISTERED;
-}
-
-/***********************************************************************
  *             RpcServerInqBindings (RPCRT4.@)
  */
 RPC_STATUS WINAPI RpcServerInqBindings( RPC_BINDING_VECTOR** BindingVector )
diff --git a/dlls/rpcrt4/rpc_transport.c b/dlls/rpcrt4/rpc_transport.c
index 0ba9720..467c305 100644
--- a/dlls/rpcrt4/rpc_transport.c
+++ b/dlls/rpcrt4/rpc_transport.c
@@ -3160,3 +3160,68 @@ RPC_STATUS WINAPI RpcProtseqVectorFreeW(RPC_PROTSEQ_VECTORW **protseqs)
   }
   return RPC_S_OK;
 }
+
+/***********************************************************************
+ *             RpcNetworkInqProtseqsW (RPCRT4.@)
+ */
+RPC_STATUS WINAPI RpcNetworkInqProtseqsW( RPC_PROTSEQ_VECTORW** protseqs )
+{
+  RPC_PROTSEQ_VECTORW *pvector;
+  int i = 0;
+  RPC_STATUS status = RPC_S_OUT_OF_MEMORY;
+
+  TRACE("(%p)\n", protseqs);
+
+  *protseqs = HeapAlloc(GetProcessHeap(), 0, sizeof(RPC_PROTSEQ_VECTORW)+(sizeof(unsigned short*)*ARRAYSIZE(protseq_list)));
+  if (!*protseqs)
+    goto end;
+  pvector = *protseqs;
+  pvector->Count = 0;
+  for (i = 0; i < ARRAYSIZE(protseq_list); i++)
+  {
+    pvector->Protseq[i] = HeapAlloc(GetProcessHeap(), 0, (strlen(protseq_list[i].name)+1)*sizeof(unsigned short));
+    if (pvector->Protseq[i] == NULL)
+      goto end;
+    MultiByteToWideChar(CP_ACP, 0, (CHAR*)protseq_list[i].name, -1,
+      (WCHAR*)pvector->Protseq[i], strlen(protseq_list[i].name) + 1);
+    pvector->Count++;
+  }
+  status = RPC_S_OK;
+
+end:
+  if (status != RPC_S_OK)
+    RpcProtseqVectorFreeW(protseqs);
+  return status;
+}
+
+/***********************************************************************
+ *             RpcNetworkInqProtseqsA (RPCRT4.@)
+ */
+RPC_STATUS WINAPI RpcNetworkInqProtseqsA(RPC_PROTSEQ_VECTORA** protseqs)
+{
+  RPC_PROTSEQ_VECTORA *pvector;
+  int i = 0;
+  RPC_STATUS status = RPC_S_OUT_OF_MEMORY;
+
+  TRACE("(%p)\n", protseqs);
+
+  *protseqs = HeapAlloc(GetProcessHeap(), 0, sizeof(RPC_PROTSEQ_VECTORW)+(sizeof(unsigned char*)*ARRAYSIZE(protseq_list)));
+  if (!*protseqs)
+    goto end;
+  pvector = *protseqs;
+  pvector->Count = 0;
+  for (i = 0; i < ARRAYSIZE(protseq_list); i++)
+  {
+    pvector->Protseq[i] = HeapAlloc(GetProcessHeap(), 0, strlen(protseq_list[i].name)+1);
+    if (pvector->Protseq[i] == NULL)
+      goto end;
+    strcpy((char*)pvector->Protseq[i], protseq_list[i].name);
+    pvector->Count++;
+  }
+  status = RPC_S_OK;
+
+end:
+  if (status != RPC_S_OK)
+    RpcProtseqVectorFreeA(protseqs);
+  return status;
+}
diff --git a/include/rpcdce.h b/include/rpcdce.h
index 76994df..bbdc42f 100644
--- a/include/rpcdce.h
+++ b/include/rpcdce.h
@@ -562,6 +562,12 @@ RPCRTAPI RPC_STATUS RPC_ENTRY
 #define RpcNetworkIsProtseqValid WINELIB_NAME_AW(RpcNetworkIsProtseqValid)
 
 RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcNetworkInqProtseqsA( RPC_PROTSEQ_VECTORA** protseqs );
+RPCRTAPI RPC_STATUS RPC_ENTRY
+  RpcNetworkInqProtseqsW( RPC_PROTSEQ_VECTORW** protseqs );
+#define RpcNetworkInqProtseqs WINELIB_NAME_AW(RpcNetworkInqProtseqs)
+
+RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcProtseqVectorFreeA( RPC_PROTSEQ_VECTORA** protseqs );
 RPCRTAPI RPC_STATUS RPC_ENTRY
   RpcProtseqVectorFreeW( RPC_PROTSEQ_VECTORW** protseqs );




More information about the wine-cvs mailing list