Hans Leidekker : wbemprox: Implement Win32_NetworkAdapterConfiguration.DNSHostName.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Jan 7 17:15:36 CST 2015


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

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Wed Jan  7 15:26:50 2015 +0100

wbemprox: Implement Win32_NetworkAdapterConfiguration.DNSHostName.

---

 dlls/wbemprox/Makefile.in |  2 +-
 dlls/wbemprox/builtin.c   | 17 +++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/dlls/wbemprox/Makefile.in b/dlls/wbemprox/Makefile.in
index b5127cb..0307e0e 100644
--- a/dlls/wbemprox/Makefile.in
+++ b/dlls/wbemprox/Makefile.in
@@ -1,5 +1,5 @@
 MODULE    = wbemprox.dll
-IMPORTS   = version iphlpapi dxgi oleaut32 ole32 advapi32 user32 gdi32
+IMPORTS   = version iphlpapi dxgi oleaut32 ole32 advapi32 user32 gdi32 ws2_32
 
 C_SRCS = \
 	builtin.c \
diff --git a/dlls/wbemprox/builtin.c b/dlls/wbemprox/builtin.c
index 3f51f7d..0c37c39 100644
--- a/dlls/wbemprox/builtin.c
+++ b/dlls/wbemprox/builtin.c
@@ -28,6 +28,7 @@
 #include "windef.h"
 #include "winbase.h"
 #include "winsock2.h"
+#include "ws2tcpip.h"
 #include "initguid.h"
 #include "wbemcli.h"
 #include "wbemprov.h"
@@ -149,6 +150,8 @@ static const WCHAR prop_displaynameW[] =
     {'D','i','s','p','l','a','y','N','a','m','e',0};
 static const WCHAR prop_diskindexW[] =
     {'D','i','s','k','I','n','d','e','x',0};
+static const WCHAR prop_dnshostnameW[] =
+    {'D','N','S','H','o','s','t','N','a','m','e',0};
 static const WCHAR prop_domainW[] =
     {'D','o','m','a','i','n',0};
 static const WCHAR prop_domainroleW[] =
@@ -389,6 +392,7 @@ static const struct column col_networkadapter[] =
 };
 static const struct column col_networkadapterconfig[] =
 {
+    { prop_dnshostnameW,        CIM_STRING|COL_FLAG_DYNAMIC },
     { prop_indexW,              CIM_UINT32|COL_FLAG_KEY, VT_I4 },
     { prop_ipconnectionmetricW, CIM_UINT32, VT_I4 },
     { prop_ipenabledW,          CIM_BOOLEAN },
@@ -705,6 +709,7 @@ struct record_networkadapter
 };
 struct record_networkadapterconfig
 {
+    const WCHAR *dnshostname;
     UINT32       index;
     UINT32       ipconnectionmetric;
     int          ipenabled;
@@ -1829,6 +1834,17 @@ static enum fill_status fill_networkadapter( struct table *table, const struct e
     return status;
 }
 
+static WCHAR *get_dnshostname( IP_ADAPTER_UNICAST_ADDRESS *addr )
+{
+    const SOCKET_ADDRESS *sa = &addr->Address;
+    WCHAR buf[NI_MAXHOST];
+
+    if (!addr) return NULL;
+    if (GetNameInfoW( sa->lpSockaddr, sa->iSockaddrLength, buf, sizeof(buf)/sizeof(buf[0]), NULL,
+                      0, NI_NAMEREQD )) return NULL;
+    return heap_strdupW( buf );
+}
+
 static enum fill_status fill_networkadapterconfig( struct table *table, const struct expr *cond )
 {
     struct record_networkadapterconfig *rec;
@@ -1860,6 +1876,7 @@ static enum fill_status fill_networkadapterconfig( struct table *table, const st
         if (aa->IfType == IF_TYPE_SOFTWARE_LOOPBACK) continue;
 
         rec = (struct record_networkadapterconfig *)(table->data + offset);
+        rec->dnshostname        = get_dnshostname( aa->FirstUnicastAddress );
         rec->index              = aa->u.s.IfIndex;
         rec->ipconnectionmetric = 20;
         rec->ipenabled          = -1;




More information about the wine-cvs mailing list