Added some stubbed Ds-calls
Start of conformance tests for these Ds-calls.
diff --git a/dlls/netapi32/Makefile.in b/dlls/netapi32/Makefile.in
index 8bb7932..b898d10 100644
--- a/dlls/netapi32/Makefile.in
+++ b/dlls/netapi32/Makefile.in
@@ -11,6 +11,7 @@
access.c \
apibuf.c \
browsr.c \
+ ds.c \
nbcmdqueue.c \
nbnamecache.c \
nbt.c \
diff --git a/dlls/netapi32/ds.c b/dlls/netapi32/ds.c
new file mode 100644
index 0000000..da7b9bb
--- /dev/null
+++ b/dlls/netapi32/ds.c
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2005 Paul Vriens
+ *
+ * netapi32 directory service functions
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winerror.h"
+#include "wine/debug.h"
+#include "dsrole.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(ds);
+
+/************************************************************
+ * DsRoleFreeMemory (NETAPI32.@)
+ *
+ * PARAMS
+ * Buffer [I] Pointer to the to-be-freed buffer.
+ *
+ * RETURNS
+ * Nothing
+ */
+void WINAPI DsRoleFreeMemory(PVOID Buffer)
+{
+ FIXME("(%p) stub\n", Buffer);
+}
+/************************************************************
+ * DsRoleGetPrimaryDomainInformation (NETAPI32.@)
+ *
+ * PARAMS
+ * lpServer [I] Pointer to UNICODE string with Computername
+ * InfoLevel [I] Type of data to retrieve
+ * Buffer [O] Pointer to to the requested data
+ *
+ * RETURNS
+ *
+ * NOTES
+ * When lpServer is NULL, use the local computer
+ */
+DWORD WINAPI DsRoleGetPrimaryDomainInformation(
+ LPCWSTR lpServer, DSROLE_PRIMARY_DOMAIN_INFO_LEVEL InfoLevel,
+ PBYTE* Buffer)
+{
+ FIXME("(%p, %d, %p) stub\n", lpServer, InfoLevel, Buffer);
+
+ /* Check some input parameters */
+
+ if (!Buffer) return ERROR_INVALID_PARAMETER;
+ if ((InfoLevel < DsRolePrimaryDomainInfoBasic) || (InfoLevel > DsRoleOperationState)) return ERROR_INVALID_PARAMETER;
+
+ return E_NOTIMPL;
+}
diff --git a/dlls/netapi32/netapi32.spec b/dlls/netapi32/netapi32.spec
index 412ac72..dbb42c4 100644
--- a/dlls/netapi32/netapi32.spec
+++ b/dlls/netapi32/netapi32.spec
@@ -1,3 +1,18 @@
+@ stub DsAddressToSiteNames
+@ stub DsAddressToSiteNamesEx
+@ stub DsDeregisterDnsHostRecords
+@ stub DsEnumerateDomainTrusts
+@ stub DsGetDcClose
+@ stub DsGetDcName
+@ stub DsGetDcNext
+@ stub DsGetDcOpen
+@ stub DsGetDcSiteCoverage
+@ stub DsGetForestTrustInformationW
+@ stub DsGetSiteName
+@ stub DsMergeForestTrustInformationW
+@ stdcall DsRoleFreeMemory(ptr)
+@ stdcall DsRoleGetPrimaryDomainInformation(wstr long ptr)
+@ stub DsValidateSubnetName
@ stub I_BrowserDebugCall
@ stub I_BrowserDebugTrace
@ stdcall I_BrowserQueryEmulatedDomains(wstr ptr ptr)
diff --git a/dlls/netapi32/tests/.gitignore b/dlls/netapi32/tests/.gitignore
index 0c2c030..f0f950a 100644
--- a/dlls/netapi32/tests/.gitignore
+++ b/dlls/netapi32/tests/.gitignore
@@ -1,5 +1,6 @@
Makefile
access.ok
apibuf.ok
+ds.ok
testlist.c
wksta.ok
diff --git a/dlls/netapi32/tests/Makefile.in b/dlls/netapi32/tests/Makefile.in
index 94f1971..0740f61 100644
--- a/dlls/netapi32/tests/Makefile.in
+++ b/dlls/netapi32/tests/Makefile.in
@@ -8,6 +8,7 @@
CTESTS = \
access.c \
apibuf.c \
+ ds.c \
wksta.c
@MAKE_TEST_RULES@
diff --git a/dlls/netapi32/tests/ds.c b/dlls/netapi32/tests/ds.c
new file mode 100644
index 0000000..1734156
--- /dev/null
+++ b/dlls/netapi32/tests/ds.c
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2005 Paul Vriens
+ *
+ * Conformance test of the ds functions.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <stdarg.h>
+
+#include <wine/test.h>
+#include <windef.h>
+#include <winbase.h>
+#include <winerror.h>
+#include <dsrole.h>
+
+static DWORD (WINAPI *pDsRoleGetPrimaryDomainInformation)(LPCWSTR, DSROLE_PRIMARY_DOMAIN_INFO_LEVEL, PBYTE*);
+static void (WINAPI *pDsRoleFreeMemory)(PVOID);
+
+static void test_params(void)
+{
+ DWORD ret;
+ PDSROLE_PRIMARY_DOMAIN_INFO_BASIC dpdi;
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, DsRolePrimaryDomainInfoBasic, NULL);
+ ok( ret == ERROR_INVALID_PARAMETER, "Expected error ERROR_INVALID_PARAMETER, got (%ld)\n", ret);
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, 0, NULL);
+ ok( ret == ERROR_INVALID_PARAMETER, "Expected error ERROR_INVALID_PARAMETER, got (%ld)\n", ret);
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, 4, NULL);
+ ok( ret == ERROR_INVALID_PARAMETER, "Expected error ERROR_INVALID_PARAMETER, got (%ld)\n", ret);
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, 4, (PBYTE *)&dpdi);
+ ok( ret == ERROR_INVALID_PARAMETER, "Expected error ERROR_INVALID_PARAMETER, got (%ld)\n", ret);
+}
+
+static void test_get(void)
+{
+ DWORD ret;
+ PDSROLE_PRIMARY_DOMAIN_INFO_BASIC dpdi;
+ PDSROLE_UPGRADE_STATUS_INFO dusi;
+ PDSROLE_OPERATION_STATE_INFO dosi;
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, DsRolePrimaryDomainInfoBasic, (PBYTE *)&dpdi);
+ todo_wine { ok( ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got (%ld)\n", ret); }
+ pDsRoleFreeMemory(&dpdi);
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, DsRoleUpgradeStatus, (PBYTE *)&dusi);
+ todo_wine { ok( ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got (%ld)\n", ret); }
+ pDsRoleFreeMemory(&dusi);
+
+ SetLastError(0xdeadbeef);
+ ret = pDsRoleGetPrimaryDomainInformation(NULL, DsRoleOperationState, (PBYTE *)&dosi);
+ todo_wine { ok( ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got (%ld)\n", ret); }
+ pDsRoleFreeMemory(&dosi);
+}
+
+
+START_TEST(ds)
+{
+ HMODULE hnetapi32;
+
+ hnetapi32 = LoadLibraryA("netapi32.dll");
+ if (!hnetapi32)
+ return;
+
+ SetLastError(0xdeadbeef);
+ pDsRoleGetPrimaryDomainInformation=(void*)GetProcAddress(hnetapi32,"DsRoleGetPrimaryDomainInformation");
+ if (!pDsRoleGetPrimaryDomainInformation)
+ {
+ trace("DsRoleGetPrimaryDomainInformation not implemented : (%ld), stop testing\n", GetLastError());
+ return;
+ }
+ pDsRoleFreeMemory=(void*)GetProcAddress(hnetapi32,"DsRoleFreeMemory");
+
+ test_params();
+ test_get();
+}
diff --git a/include/Makefile.in b/include/Makefile.in
index 18a6313..c97b0e1 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -121,6 +121,7 @@
dsdriver.h \
dshow.h \
dsound.h \
+ dsrole.h \
dxdiag.h \
dxerr8.h \
dxerr9.h \
diff --git a/include/dsrole.h b/include/dsrole.h
new file mode 100644
index 0000000..7364ace
--- /dev/null
+++ b/include/dsrole.h
@@ -0,0 +1,84 @@
+/*
+ * Directory Services definitions
+ *
+ * Copyright 2005 Paul Vriens
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef __WINE_DSROLE_H
+#define __WINE_DSROLE_H
+
+#define DSROLE_PRIMARY_DS_RUNNING 0x00000001
+#define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002
+#define DSROLE_UPGRADE_IN_PROGRESS 0x00000004
+#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
+
+typedef enum _DSROLE_PRIMARY_DOMAIN_INFO_LEVEL
+{
+ DsRolePrimaryDomainInfoBasic = 1,
+ DsRoleUpgradeStatus,
+ DsRoleOperationState
+} DSROLE_PRIMARY_DOMAIN_INFO_LEVEL;
+
+typedef enum _DSROLE_MACHINE_ROLE
+{
+ DsRole_RoleStandaloneWorkstation = 0,
+ DsRole_RoleMemberWorkstation,
+ DsRole_RoleStandaloneServer,
+ DsRole_RoleMemberServer,
+ DsRole_RoleBackupDomainController,
+ DsRole_RolePrimaryDomainController
+} DSROLE_MACHINE_ROLE;
+
+typedef enum _DSROLE_SERVER_STATE
+{
+ DsRoleServerUnknown = 0,
+ DsRoleServerPrimary,
+ DsRoleServerBackup
+} DSROLE_SERVER_STATE;
+
+typedef enum _DSROLE_OPERATION_STATE
+{
+ DsRoleOperationIdle = 0,
+ DsRoleOperationActive,
+ DsRoleOperationNeedReboot
+} DSROLE_OPERATION_STATE;
+
+typedef struct _DSROLE_PRIMARY_DOMAIN_INFO_BASIC
+{
+ DSROLE_MACHINE_ROLE MachineRole;
+ ULONG Flags;
+ LPWSTR DomainNameFlat;
+ LPWSTR DomainNameDns;
+ LPWSTR DomainForestName;
+ GUID DomainGuid;
+} DSROLE_PRIMARY_DOMAIN_INFO_BASIC, *PDSROLE_PRIMARY_DOMAIN_INFO_BASIC;
+
+typedef struct _DSROLE_UPGRADE_STATUS_INFO
+{
+ ULONG OperationState;
+ DSROLE_SERVER_STATE PreviousServerState;
+} DSROLE_UPGRADE_STATUS_INFO, *PDSROLE_UPGRADE_STATUS_INFO;
+
+typedef struct _DSROLE_OPERATION_STATE_INFO
+{
+ DSROLE_OPERATION_STATE OperationState;
+} DSROLE_OPERATION_STATE_INFO, *PDSROLE_OPERATION_STATE_INFO;
+
+VOID WINAPI DsRoleFreeMemory(IN PVOID Buffer);
+DWORD WINAPI DsRoleGetPrimaryDomainInformation(IN LPCWSTR lpServer OPTIONAL, IN DSROLE_PRIMARY_DOMAIN_INFO_LEVEL InfoLevel, OUT PBYTE *Buffer);
+
+#endif /* __WINE_DSROLE_H */