[PATCH 1/2] ntdsapi: add DsCrackNamesA/W stubs

Austin English austinenglish at gmail.com
Thu Apr 5 19:40:31 CDT 2018


Signed-off-by: Austin English <austinenglish at gmail.com>
---
 dlls/ntdsapi/ntdsapi.c    | 23 +++++++++++++++++++
 dlls/ntdsapi/ntdsapi.spec |  4 ++--
 include/ntdsapi.h         | 56 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 81 insertions(+), 2 deletions(-)

diff --git a/dlls/ntdsapi/ntdsapi.c b/dlls/ntdsapi/ntdsapi.c
index ee0c8379c3..afb6c7a652 100644
--- a/dlls/ntdsapi/ntdsapi.c
+++ b/dlls/ntdsapi/ntdsapi.c
@@ -204,6 +204,9 @@ DWORD WINAPI DsServerRegisterSpnW(DS_SPN_WRITE_OP operation, LPCWSTR ServiceClas
     return ERROR_CALL_NOT_IMPLEMENTED;
 }
 
+/***********************************************************************
+ *             DsClientMakeSpnForTargetServerW (NTDSAPI.@)
+ */
 DWORD WINAPI DsClientMakeSpnForTargetServerW(LPCWSTR class, LPCWSTR name, DWORD *buflen, LPWSTR buf)
 {
     DWORD len;
@@ -229,3 +232,23 @@ DWORD WINAPI DsClientMakeSpnForTargetServerW(LPCWSTR class, LPCWSTR name, DWORD
 
     return ERROR_SUCCESS;
 }
+
+/***********************************************************************
+ *             DsCrackNamesA (NTDSAPI.@)
+ */
+DWORD WINAPI DsCrackNamesA(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired,
+                   DWORD num, const CHAR *names, PDS_NAME_RESULT *result)
+{
+    FIXME("(%p %u %u %u %u %s %p stub\n", handle, flags, offered, desired, num, wine_dbgstr_a(names), result);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+/***********************************************************************
+ *             DsCrackNamesW (NTDSAPI.@)
+ */
+DWORD WINAPI DsCrackNamesW(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired,
+                   DWORD num, const WCHAR *names, PDS_NAME_RESULT *result)
+{
+    FIXME("(%p %u %u %u %u %s %p stub\n", handle, flags, offered, desired, num, wine_dbgstr_w(names), result);
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
diff --git a/dlls/ntdsapi/ntdsapi.spec b/dlls/ntdsapi/ntdsapi.spec
index 925cb71358..16842232cf 100644
--- a/dlls/ntdsapi/ntdsapi.spec
+++ b/dlls/ntdsapi/ntdsapi.spec
@@ -8,8 +8,8 @@
 @ stub DsBindWithSpnW
 @ stub DsClientMakeSpnForTargetServerA
 @ stdcall DsClientMakeSpnForTargetServerW(wstr wstr ptr ptr)
-@ stub DsCrackNamesA
-@ stub DsCrackNamesW
+@ stdcall DsCrackNamesA(ptr long long long long str ptr)
+@ stdcall DsCrackNamesW(ptr long long long long wstr ptr)
 @ stub DsCrackSpn2A
 @ stub DsCrackSpn2W
 @ stub DsCrackSpn3W
diff --git a/include/ntdsapi.h b/include/ntdsapi.h
index 672ea635d2..c3315070bb 100644
--- a/include/ntdsapi.h
+++ b/include/ntdsapi.h
@@ -33,6 +33,28 @@ DWORD WINAPI DsMakeSpnA(LPCSTR, LPCSTR, LPCSTR, USHORT, LPCSTR, DWORD*, LPSTR);
 DWORD WINAPI DsMakeSpnW(LPCWSTR, LPCWSTR, LPCWSTR, USHORT, LPCWSTR, DWORD*, LPWSTR);
 #define DsMakeSpn WINELIB_NAME_AW(DsMakeSpn)
 
+typedef enum  {
+  DS_NAME_NO_FLAGS              = 0x0,
+  DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1,
+  DS_NAME_FLAG_EVAL_AT_DC       = 0x2,
+  DS_NAME_FLAG_GCVERIFY         = 0x4,
+  DS_NAME_FLAG_TRUST_REFERRAL   = 0x8
+} DS_NAME_FLAGS;
+
+typedef enum  {
+  DS_UNKNOWN_NAME            = 0,
+  DS_FQDN_1779_NAME          = 1,
+  DS_NT4_ACCOUNT_NAME        = 2,
+  DS_DISPLAY_NAME            = 3,
+  DS_UNIQUE_ID_NAME          = 6,
+  DS_CANONICAL_NAME          = 7,
+  DS_USER_PRINCIPAL_NAME     = 8,
+  DS_CANONICAL_NAME_EX       = 9,
+  DS_SERVICE_PRINCIPAL_NAME  = 10,
+  DS_SID_OR_SID_HISTORY_NAME = 11,
+  DS_DNS_DOMAIN_NAME         = 12
+} DS_NAME_FORMAT;
+
 typedef enum
 {
     DS_SPN_DNS_HOST    = 0,
@@ -50,6 +72,40 @@ typedef enum
     DS_SPN_DELETE_SPN_OP  = 2
 } DS_SPN_WRITE_OP;
 
+typedef struct {
+    DWORD status;
+    CHAR  pDomain;
+    CHAR  pName;
+} DS_NAME_RESULT_ITEMA, *PDS_NAME_RESULT_ITEMA;
+
+typedef struct {
+    DWORD                 cItems;
+    PDS_NAME_RESULT_ITEMA rItems;
+} DS_NAME_RESULTA, *PDS_NAME_RESULTA;
+
+typedef struct {
+    DWORD status;
+    WCHAR pDomain;
+    WCHAR pName;
+} DS_NAME_RESULT_ITEMW, *PDS_NAME_RESULT_ITEMW;
+
+typedef struct {
+    DWORD                 cItems;
+    PDS_NAME_RESULT_ITEMW rItems;
+} DS_NAME_RESULTW, *PDS_NAME_RESULTW;
+
+#ifdef UNICODE
+#define DS_NAME_RESULT DS_NAME_RESULTW
+#define PDS_NAME_RESULT PDS_NAME_RESULTW
+#define DS_NAME_RESULT_ITEM DS_NAME_RESULT_ITEMW
+#define PDS_NAME_RESULT_ITEM PDS_NAME_RESULT_ITEMW
+#else
+#define DS_NAME_RESULT DS_NAME_RESULTA
+#define PDS_NAME_RESULT PDS_NAME_RESULTA
+#define DS_NAME_RESULT_ITEM DS_NAME_RESULT_ITEMA
+#define PDS_NAME_RESULT_ITEM PDS_NAME_RESULT_ITEMA
+#endif
+
 DWORD WINAPI DsServerRegisterSpnA(DS_SPN_WRITE_OP operation, LPCSTR ServiceClass, LPCSTR UserObjectDN);
 DWORD WINAPI DsServerRegisterSpnW(DS_SPN_WRITE_OP operation, LPCWSTR ServiceClass, LPCWSTR UserObjectDN);
 #define DsServerRegisterSpn WINELIB_NAME_AW(DsServerRegisterSpn)
-- 
2.16.1




More information about the wine-devel mailing list