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( ¶ms );
+ *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