Huw Davies : nsi: Add a stub implementation of NsiEnumerateObjectsAllParametersEx().

Alexandre Julliard julliard at winehq.org
Mon Jun 28 16:49:35 CDT 2021


Module: wine
Branch: master
Commit: 2bde6ccddb11cf09c3b353a98d5d7e8a578a9f2f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=2bde6ccddb11cf09c3b353a98d5d7e8a578a9f2f

Author: Huw Davies <huw at codeweavers.com>
Date:   Mon Jun 28 08:35:48 2021 +0100

nsi: Add a stub implementation of NsiEnumerateObjectsAllParametersEx().

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/nsi/nsi.c       | 27 +++++++++++++++++++++++++++
 dlls/nsi/nsi.spec    |  2 +-
 dlls/nsi/tests/nsi.c | 20 ++++++++++++++++++++
 include/wine/nsi.h   | 19 +++++++++++++++++++
 4 files changed, 67 insertions(+), 1 deletion(-)

diff --git a/dlls/nsi/nsi.c b/dlls/nsi/nsi.c
index 66054ffacd6..1ed0cfad916 100644
--- a/dlls/nsi/nsi.c
+++ b/dlls/nsi/nsi.c
@@ -43,8 +43,35 @@ DWORD WINAPI NsiEnumerateObjectsAllParameters( DWORD unk, DWORD unk2, const NPI_
                                                void *dynamic_data, DWORD dynamic_size, void *static_data, DWORD static_size,
                                                DWORD *count )
 {
+    struct nsi_enumerate_all_ex params;
+    DWORD err;
+
     FIXME( "%d %d %p %d %p %d %p %d %p %d %p %d %p: stub\n", unk, unk2, module, table, key_data, key_size,
            rw_data, rw_size, dynamic_data, dynamic_size, static_data, static_size, count );
+
+    params.unknown[0] = 0;
+    params.unknown[1] = 0;
+    params.module = module;
+    params.table = table;
+    params.first_arg = unk;
+    params.second_arg = unk2;
+    params.key_data = key_data;
+    params.key_size = key_size;
+    params.rw_data = rw_data;
+    params.rw_size = rw_size;
+    params.dynamic_data = dynamic_data;
+    params.dynamic_size = dynamic_size;
+    params.static_data = static_data;
+    params.static_size = static_size;
+    params.count = *count;
+
+    err = NsiEnumerateObjectsAllParametersEx( &params );
+    *count = params.count;
+    return err;
+}
+
+DWORD WINAPI NsiEnumerateObjectsAllParametersEx( struct nsi_enumerate_all_ex *params )
+{
     return ERROR_CALL_NOT_IMPLEMENTED;
 }
 
diff --git a/dlls/nsi/nsi.spec b/dlls/nsi/nsi.spec
index d4a29c38fe6..912a5e8d052 100644
--- a/dlls/nsi/nsi.spec
+++ b/dlls/nsi/nsi.spec
@@ -4,7 +4,7 @@
 @ stub NsiDeregisterChangeNotification
 @ stub NsiDeregisterChangeNotificationEx
 @ stdcall NsiEnumerateObjectsAllParameters(long long ptr long ptr long ptr long ptr long ptr long ptr)
-@ stub NsiEnumerateObjectsAllParametersEx
+@ stdcall NsiEnumerateObjectsAllParametersEx(ptr)
 @ stub NsiEnumerateObjectsAllPersistentParametersWithMask
 @ stub NsiFreePersistentDataWithMaskTable
 @ stdcall NsiFreeTable(ptr ptr ptr ptr)
diff --git a/dlls/nsi/tests/nsi.c b/dlls/nsi/tests/nsi.c
index b1befd548cd..5e2ea71646c 100644
--- a/dlls/nsi/tests/nsi.c
+++ b/dlls/nsi/tests/nsi.c
@@ -40,6 +40,7 @@ static void test_nsi_api( void )
     struct nsi_ndis_ifinfo_rw *rw_tbl, *rw, get_rw, *enum_rw_tbl, *enum_rw;
     struct nsi_ndis_ifinfo_dynamic *dyn_tbl, *dyn, get_dyn, *enum_dyn_tbl, *enum_dyn;
     struct nsi_ndis_ifinfo_static *stat_tbl, *stat, get_stat, *enum_stat_tbl, *enum_stat;
+    struct nsi_enumerate_all_ex enum_params;
     DWORD err, count, i, rw_size, enum_count;
     NET_LUID *luid_tbl, *enum_luid_tbl;
 
@@ -159,6 +160,25 @@ todo_wine
             ok( enum_luid_tbl[i].Value == luid_tbl[i].Value, "%d: mismatch\n", i );
     }
 
+    memset( &enum_params, 0, sizeof(enum_params) );
+    enum_params.first_arg = 1;
+    enum_params.second_arg = 1;
+    enum_params.module = &NPI_MS_NDIS_MODULEID;
+    enum_params.table = NSI_NDIS_IFINFO_TABLE;
+    enum_params.key_data = enum_luid_tbl;
+    enum_params.key_size = sizeof(*enum_luid_tbl);
+    enum_params.rw_data = enum_rw_tbl;
+    enum_params.rw_size = rw_size;
+    enum_params.dynamic_data = enum_dyn_tbl;
+    enum_params.dynamic_size = sizeof(*enum_dyn_tbl);
+    enum_params.static_data = enum_stat_tbl;
+    enum_params.static_size = sizeof(*enum_stat_tbl);
+    enum_params.count = count;
+
+    err = NsiEnumerateObjectsAllParametersEx( &enum_params );
+    ok( !err, "got %d\n", err );
+    ok( enum_params.count == count, "mismatch\n" );
+
     free( enum_luid_tbl );
     free( enum_rw_tbl );
     free( enum_dyn_tbl );
diff --git a/include/wine/nsi.h b/include/wine/nsi.h
index 648adac9931..999b8a57810 100644
--- a/include/wine/nsi.h
+++ b/include/wine/nsi.h
@@ -98,6 +98,24 @@ struct nsi_ndis_ifinfo_static
 #define NSI_PARAM_TYPE_DYNAMIC 1
 #define NSI_PARAM_TYPE_STATIC  2
 
+struct nsi_enumerate_all_ex
+{
+    void *unknown[2];
+    const NPI_MODULEID *module;
+    DWORD_PTR table;
+    DWORD first_arg;
+    DWORD second_arg;
+    void *key_data;
+    DWORD key_size;
+    void *rw_data;
+    DWORD rw_size;
+    void *dynamic_data;
+    DWORD dynamic_size;
+    void *static_data;
+    DWORD static_size;
+    DWORD_PTR count;
+};
+
 DWORD WINAPI NsiAllocateAndGetTable( DWORD unk, const NPI_MODULEID *module, DWORD table, void **key_data, DWORD key_size,
                                      void **rw_data, DWORD rw_size, void **dynamic_data, DWORD dynamic_size,
                                      void **static_data, DWORD static_size, DWORD *count, DWORD unk2 );
@@ -105,6 +123,7 @@ DWORD WINAPI NsiEnumerateObjectsAllParameters( DWORD unk, DWORD unk2, const NPI_
                                                void *key_data, DWORD key_size, void *rw_data, DWORD rw_size,
                                                void *dynamic_data, DWORD dynamic_size, void *static_data, DWORD static_size,
                                                DWORD *count );
+DWORD WINAPI NsiEnumerateObjectsAllParametersEx( struct nsi_enumerate_all_ex *params );
 void WINAPI NsiFreeTable( void *key_data, void *rw_data, void *dynamic_data, void *static_data );
 DWORD WINAPI NsiGetAllParameters( DWORD unk, const NPI_MODULEID *module, DWORD table, const void *key, DWORD key_size,
                                   void *rw_data, DWORD rw_size, void *dynamic_data, DWORD dynamic_size,




More information about the wine-cvs mailing list