Module: wine Branch: stable Commit: 14bbb6a7ede4e308f2616bc8869d5e3f2f74ef75 URL: https://source.winehq.org/git/wine.git/?a=commit;h=14bbb6a7ede4e308f2616bc88...
Author: Austin English austinenglish@gmail.com Date: Fri Apr 13 16:11:47 2018 -0500
ntdsapi: Add DsCrackNamesA/W stubs.
Signed-off-by: Austin English austinenglish@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit 369c163929dc82c66b65077a5e28d0821ec8b382) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
...-win-security-activedirectoryclient-l1-1-0.spec | 2 +- dlls/ntdsapi/ntdsapi.c | 23 +++++++++ dlls/ntdsapi/ntdsapi.spec | 4 +- include/ntdsapi.h | 59 ++++++++++++++++++++++ 4 files changed, 85 insertions(+), 3 deletions(-)
diff --git a/dlls/api-ms-win-security-activedirectoryclient-l1-1-0/api-ms-win-security-activedirectoryclient-l1-1-0.spec b/dlls/api-ms-win-security-activedirectoryclient-l1-1-0/api-ms-win-security-activedirectoryclient-l1-1-0.spec index eef1c40..8f897f7 100644 --- a/dlls/api-ms-win-security-activedirectoryclient-l1-1-0/api-ms-win-security-activedirectoryclient-l1-1-0.spec +++ b/dlls/api-ms-win-security-activedirectoryclient-l1-1-0/api-ms-win-security-activedirectoryclient-l1-1-0.spec @@ -1,5 +1,5 @@ @ stub DsBindWithSpnExW -@ stub DsCrackNamesW +@ stdcall DsCrackNamesW(ptr long long long long ptr ptr) ntdsapi.DsCrackNamesW @ stub DsFreeDomainControllerInfoW @ stub DsFreeNameResultW @ stub DsFreePasswordCredentials diff --git a/dlls/ntdsapi/ntdsapi.c b/dlls/ntdsapi/ntdsapi.c index ee0c837..003b1a2 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_RESULTA *result) +{ + FIXME("(%p %u %u %u %u %p %p stub\n", handle, flags, offered, desired, num, 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_RESULTW *result) +{ + FIXME("(%p %u %u %u %u %p %p stub\n", handle, flags, offered, desired, num, names, result); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/dlls/ntdsapi/ntdsapi.spec b/dlls/ntdsapi/ntdsapi.spec index 925cb71..bc7827d 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 ptr ptr) +@ stdcall DsCrackNamesW(ptr long long long long ptr ptr) @ stub DsCrackSpn2A @ stub DsCrackSpn2W @ stub DsCrackSpn3W diff --git a/include/ntdsapi.h b/include/ntdsapi.h index 672ea63..099c205 100644 --- a/include/ntdsapi.h +++ b/include/ntdsapi.h @@ -35,6 +35,30 @@ DWORD WINAPI DsMakeSpnW(LPCWSTR, LPCWSTR, LPCWSTR, USHORT, LPCWSTR, DWORD*, LPWS
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, DS_SPN_DN_HOST = 1, DS_SPN_NB_HOST = 2, @@ -50,6 +74,41 @@ typedef enum DS_SPN_DELETE_SPN_OP = 2 } DS_SPN_WRITE_OP;
+typedef struct +{ + DWORD status; + LPSTR pDomain; + LPSTR pName; +} DS_NAME_RESULT_ITEMA, *PDS_NAME_RESULT_ITEMA; + +typedef struct +{ + DWORD status; + LPWSTR pDomain; + LPWSTR pName; +} DS_NAME_RESULT_ITEMW, *PDS_NAME_RESULT_ITEMW; + +DECL_WINELIB_TYPE_AW(DS_NAME_RESULT_ITEM) +DECL_WINELIB_TYPE_AW(PDS_NAME_RESULT_ITEM) + +typedef struct +{ + DWORD cItems; + PDS_NAME_RESULT_ITEMA rItems; +} DS_NAME_RESULTA, *PDS_NAME_RESULTA; + +typedef struct +{ + DWORD cItems; + PDS_NAME_RESULT_ITEMW rItems; +} DS_NAME_RESULTW, *PDS_NAME_RESULTW; + +DECL_WINELIB_TYPE_AW(DS_NAME_RESULT) +DECL_WINELIB_TYPE_AW(PDS_NAME_RESULT) + +DWORD WINAPI DsCrackNamesA(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, DWORD num, const CHAR **names, PDS_NAME_RESULTA *result); +DWORD WINAPI DsCrackNamesW(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, DWORD num, const WCHAR **names, PDS_NAME_RESULTW *result); +#define DsCrackNames WINELIB_NAME_AW(DsCrackNames) 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)