2 * Copyright 2005 Paul Vriens
4 * netapi32 directory service functions
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
24 #define WIN32_NO_STATUS
29 #include "wine/debug.h"
33 WINE_DEFAULT_DEBUG_CHANNEL(ds
);
35 DWORD WINAPI
DsGetDcNameW(LPCWSTR ComputerName
, LPCWSTR AvoidDCName
,
36 GUID
* DomainGuid
, LPCWSTR SiteName
, ULONG Flags
,
37 PDOMAIN_CONTROLLER_INFOW
*DomainControllerInfo
)
39 FIXME("(%s, %s, %s, %s, %08x, %p): stub\n", debugstr_w(ComputerName
),
40 debugstr_w(AvoidDCName
), debugstr_guid(DomainGuid
),
41 debugstr_w(SiteName
), Flags
, DomainControllerInfo
);
42 return ERROR_CALL_NOT_IMPLEMENTED
;
45 DWORD WINAPI
DsGetDcNameA(LPCSTR ComputerName
, LPCSTR AvoidDCName
,
46 GUID
* DomainGuid
, LPCSTR SiteName
, ULONG Flags
,
47 PDOMAIN_CONTROLLER_INFOA
*DomainControllerInfo
)
49 FIXME("(%s, %s, %s, %s, %08x, %p): stub\n", debugstr_a(ComputerName
),
50 debugstr_a(AvoidDCName
), debugstr_guid(DomainGuid
),
51 debugstr_a(SiteName
), Flags
, DomainControllerInfo
);
52 return ERROR_CALL_NOT_IMPLEMENTED
;
55 DWORD WINAPI
DsGetSiteNameW(LPCWSTR ComputerName
, LPWSTR
*SiteName
)
57 FIXME("(%s, %p): stub\n", debugstr_w(ComputerName
), SiteName
);
58 return ERROR_CALL_NOT_IMPLEMENTED
;
61 /************************************************************
62 * DsRoleFreeMemory (NETAPI32.@)
65 * Buffer [I] Pointer to the to-be-freed buffer.
70 VOID WINAPI
DsRoleFreeMemory(PVOID Buffer
)
72 TRACE("(%p)\n", Buffer
);
73 HeapFree(GetProcessHeap(), 0, Buffer
);
76 /************************************************************
77 * DsRoleGetPrimaryDomainInformation (NETAPI32.@)
80 * lpServer [I] Pointer to UNICODE string with ComputerName
81 * InfoLevel [I] Type of data to retrieve
82 * Buffer [O] Pointer to to the requested data
87 * When lpServer is NULL, use the local computer
89 DWORD WINAPI
DsRoleGetPrimaryDomainInformation(
90 LPCWSTR lpServer
, DSROLE_PRIMARY_DOMAIN_INFO_LEVEL InfoLevel
,
95 FIXME("(%p, %d, %p) stub\n", lpServer
, InfoLevel
, Buffer
);
97 /* Check some input parameters */
99 if (!Buffer
) return ERROR_INVALID_PARAMETER
;
100 if ((InfoLevel
< DsRolePrimaryDomainInfoBasic
) || (InfoLevel
> DsRoleOperationState
)) return ERROR_INVALID_PARAMETER
;
105 case DsRolePrimaryDomainInfoBasic
:
107 LSA_OBJECT_ATTRIBUTES ObjectAttributes
;
108 LSA_HANDLE PolicyHandle
;
109 PPOLICY_ACCOUNT_DOMAIN_INFO DomainInfo
;
113 PDSROLE_PRIMARY_DOMAIN_INFO_BASIC basic
;
115 ZeroMemory(&ObjectAttributes
, sizeof(ObjectAttributes
));
116 NtStatus
= LsaOpenPolicy(NULL
, &ObjectAttributes
,
117 POLICY_VIEW_LOCAL_INFORMATION
, &PolicyHandle
);
118 if (NtStatus
!= STATUS_SUCCESS
)
120 TRACE("LsaOpenPolicyFailed with NT status %x\n",
121 LsaNtStatusToWinError(NtStatus
));
122 return ERROR_OUTOFMEMORY
;
124 LsaQueryInformationPolicy(PolicyHandle
,
125 PolicyAccountDomainInformation
, (PVOID
*)&DomainInfo
);
126 logon_domain_sz
= lstrlenW(DomainInfo
->DomainName
.Buffer
) + 1;
127 LsaClose(PolicyHandle
);
129 size
= sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC
) +
130 logon_domain_sz
* sizeof(WCHAR
);
131 basic
= HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, size
);
134 basic
->MachineRole
= DsRole_RoleStandaloneWorkstation
;
135 basic
->DomainNameFlat
= (LPWSTR
)((LPBYTE
)basic
+
136 sizeof(DSROLE_PRIMARY_DOMAIN_INFO_BASIC
));
137 lstrcpyW(basic
->DomainNameFlat
, DomainInfo
->DomainName
.Buffer
);
141 ret
= ERROR_OUTOFMEMORY
;
142 *Buffer
= (PBYTE
)basic
;
143 LsaFreeMemory(DomainInfo
);
147 ret
= ERROR_CALL_NOT_IMPLEMENTED
;