ReactOS 0.4.17-dev-470-gf9e3448
domain.c File Reference
#include "precomp.h"
Include dependency graph for domain.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (wkssvc)
 
static NET_API_STATUS NetpSetPrimaryDomain (_In_ LPCWSTR lpWorkgroupName)
 
NET_API_STATUS NetpJoinWorkgroup (_In_ LPCWSTR lpWorkgroupName)
 
NET_API_STATUS NetpGetJoinInformation (_Out_ LPWSTR *NameBuffer, _Out_ PNETSETUP_JOIN_STATUS BufferType)
 

Function Documentation

◆ NetpGetJoinInformation()

NET_API_STATUS NetpGetJoinInformation ( _Out_ LPWSTR NameBuffer,
_Out_ PNETSETUP_JOIN_STATUS  BufferType 
)

Definition at line 71 of file domain.c.

74{
76 PPOLICY_PRIMARY_DOMAIN_INFO PrimaryDomainInfo = NULL;
77 LSA_HANDLE PolicyHandle = NULL;
81
82 TRACE("NetpGetJoinInformation(%p, %p)\n", NameBuffer, BufferType);
83
86
90 &PolicyHandle);
91 if (!LSA_SUCCESS(Status))
93
94 Status = LsaQueryInformationPolicy(PolicyHandle,
96 (PVOID*)&PrimaryDomainInfo);
97 if (!LSA_SUCCESS(Status))
98 {
99 ERR("LsaQueryInformationPolicy failed (Status 0x%lx)\n", Status);
100 goto done;
101 }
102
103 TRACE("Sid: %p\n", PrimaryDomainInfo->Sid);
104 TRACE("Name: %hu %S\n", PrimaryDomainInfo->Name.Length, PrimaryDomainInfo->Name.Buffer);
105
106 if (PrimaryDomainInfo->Name.Length > 0)
107 {
108 TRACE("PD name!\n");
109 if (PrimaryDomainInfo->Sid != NULL)
110 {
111 TRACE("PD SID! -->Domain\n");
113 }
114 else
115 {
116 TRACE("No PD SID! --> Workgroup\n");
118 }
119 }
120 else
121 {
122 TRACE("No PD name!\n");
124 }
125
126 TRACE("BufferType: %u\n", *BufferType);
127
128 if ((Type != NetSetupUnjoined) && (PrimaryDomainInfo->Name.Length > 0))
129 {
130 Name = midl_user_allocate(PrimaryDomainInfo->Name.Length + sizeof(WCHAR));
131 if (Name == NULL)
132 {
134 goto done;
135 }
136
137 wcscpy(Name, PrimaryDomainInfo->Name.Buffer);
138 }
139
140done:
141 if (PrimaryDomainInfo)
142 {
143 if (PrimaryDomainInfo->Sid)
144 LsaFreeMemory(PrimaryDomainInfo->Sid);
145
146 LsaFreeMemory(PrimaryDomainInfo);
147 }
148
149 if (PolicyHandle)
150 LsaClose(PolicyHandle);
151
152 if (LSA_SUCCESS(Status))
153 {
154 *NameBuffer = Name;
155 *BufferType = Type;
156 }
157
159}
Type
Definition: Type.h:7
LONG NTSTATUS
Definition: precomp.h:26
#define ERR(fmt,...)
Definition: precomp.h:57
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:36
LPWSTR Name
Definition: desk.c:124
#define NULL
Definition: types.h:112
NTSTATUS WINAPI LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName OPTIONAL, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
Definition: lsa.c:1183
ULONG WINAPI LsaNtStatusToWinError(IN NTSTATUS Status)
Definition: lsa.c:1131
NTSTATUS WINAPI LsaQueryInformationPolicy(IN LSA_HANDLE PolicyHandle, IN POLICY_INFORMATION_CLASS InformationClass, OUT PVOID *Buffer)
Definition: lsa.c:1473
NTSTATUS WINAPI LsaFreeMemory(IN PVOID Buffer)
Definition: lsa.c:701
NTSTATUS WINAPI LsaClose(IN LSA_HANDLE ObjectHandle)
Definition: lsa.c:194
Status
Definition: gdiplustypes.h:24
@ NetSetupDomainName
Definition: lmjoin.h:13
@ NetSetupWorkgroupName
Definition: lmjoin.h:12
@ NetSetupUnjoined
Definition: lmjoin.h:11
@ NetSetupUnknownStatus
Definition: lmjoin.h:10
enum _NETSETUP_JOIN_STATUS NETSETUP_JOIN_STATUS
#define ZeroMemory
Definition: minwinbase.h:31
short WCHAR
Definition: pedump.c:58
@ PolicyPrimaryDomainInformation
Definition: ntsecapi.h:245
struct _LSA_OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES
#define POLICY_VIEW_LOCAL_INFORMATION
Definition: ntsecapi.h:61
#define LSA_SUCCESS(x)
Definition: ntsecapi.h:23
#define midl_user_allocate
Definition: rpc.h:40
wcscpy
#define TRACE(s)
Definition: solgame.cpp:4
LSA_UNICODE_STRING Name
Definition: ntsecapi.h:570
uint16_t * LPWSTR
Definition: typedefs.h:56
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158

Referenced by NetrGetJoinInformation().

◆ NetpJoinWorkgroup()

NET_API_STATUS NetpJoinWorkgroup ( _In_ LPCWSTR  lpWorkgroupName)

Definition at line 52 of file domain.c.

54{
56
57 FIXME("NetpJoinWorkgroup(%S)\n", lpWorkgroupName);
58
59 status = NetpSetPrimaryDomain(lpWorkgroupName);
60 if (status != NERR_Success)
61 {
62 ERR("NetpSetPrimaryDomain failed (Status %lu)\n", status);
63 return status;
64 }
65
66 return NERR_Success;
67}
static NET_API_STATUS NetpSetPrimaryDomain(_In_ LPCWSTR lpWorkgroupName)
Definition: domain.c:19
#define FIXME(fmt,...)
Definition: precomp.h:53
#define NERR_Success
Definition: lmerr.h:5
DWORD NET_API_STATUS
Definition: ms-dtyp.idl:91
Definition: ps.c:97

Referenced by NetrJoinDomain2().

◆ NetpSetPrimaryDomain()

static NET_API_STATUS NetpSetPrimaryDomain ( _In_ LPCWSTR  lpWorkgroupName)
static

Definition at line 19 of file domain.c.

21{
23 POLICY_PRIMARY_DOMAIN_INFO PrimaryDomainInfo;
24 LSA_HANDLE PolicyHandle = NULL;
26
29
33 &PolicyHandle);
34 if (!LSA_SUCCESS(Status))
36
37 RtlInitUnicodeString(&PrimaryDomainInfo.Name,
38 lpWorkgroupName);
39 PrimaryDomainInfo.Sid = NULL;
40
41 Status = LsaSetInformationPolicy(PolicyHandle,
43 &PrimaryDomainInfo);
44
45 LsaClose(PolicyHandle);
46
48}
NTSTATUS WINAPI LsaSetInformationPolicy(IN LSA_HANDLE PolicyHandle, IN POLICY_INFORMATION_CLASS InformationClass, IN PVOID Buffer)
Definition: lsa.c:1948
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define POLICY_TRUST_ADMIN
Definition: ntsecapi.h:64

Referenced by NetpJoinWorkgroup().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( wkssvc  )