Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion contrib/platform/src/com/sun/jna/platform/win32/DsGetDC.java
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,13 @@ public static class ByReference extends DS_DOMAIN_TRUSTS implements Structure.By
* Contains the GUID of the domain represented by this structure.
*/
public GUID DomainGuid;

public DS_DOMAIN_TRUSTS() {
}

public DS_DOMAIN_TRUSTS(Pointer p) {
super(p);
}
};

/**
Expand All @@ -209,7 +216,7 @@ public static class ByReference extends PDS_DOMAIN_TRUSTS implements Structure.B
}

public DS_DOMAIN_TRUSTS.ByReference t;

/**
* Returns domain trusts.
* @param count
Expand Down
4 changes: 2 additions & 2 deletions contrib/platform/src/com/sun/jna/platform/win32/Netapi32.java
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ public int DsGetForestTrustInformation(String serverName, String trustedDomainNa
* @param Flags
* Contains a set of flags that determines which domain trusts to enumerate.
* @param Domains
* Pointer to a PDS_DOMAIN_TRUSTS value that receives an array of DS_DOMAIN_TRUSTS structures.
* Receives a pointer which points to an array of DS_DOMAIN_TRUSTS structures.
* Each structure in this array contains trust data about a domain. The caller must free this
* memory when it is no longer required by calling NetApiBufferFree.
* @param DomainCount
Expand All @@ -397,7 +397,7 @@ public int DsGetForestTrustInformation(String serverName, String trustedDomainNa
* Returns ERROR_SUCCESS if successful or a Win32 error code otherwise.
*/
public int DsEnumerateDomainTrusts(String serverName, int Flags,
PDS_DOMAIN_TRUSTS.ByReference Domains, IntByReference DomainCount);
PointerByReference Domains, IntByReference DomainCount);

/**
* The NetUserGetInfo function retrieves information about a particular user account on a server.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import com.sun.jna.Pointer;
import com.sun.jna.platform.win32.DsGetDC.DS_DOMAIN_TRUSTS;
import com.sun.jna.platform.win32.DsGetDC.PDOMAIN_CONTROLLER_INFO;
import com.sun.jna.platform.win32.DsGetDC.PDS_DOMAIN_TRUSTS;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.LMAccess.GROUP_USERS_INFO_0;
import com.sun.jna.platform.win32.LMAccess.LOCALGROUP_INFO_1;
Expand Down Expand Up @@ -618,16 +617,17 @@ public static DomainTrust[] getDomainTrusts() {
*/
public static DomainTrust[] getDomainTrusts(String serverName) {
IntByReference domainCount = new IntByReference();
PDS_DOMAIN_TRUSTS.ByReference domains = new PDS_DOMAIN_TRUSTS.ByReference();
int rc = Netapi32.INSTANCE.DsEnumerateDomainTrusts(serverName,
DsGetDC.DS_DOMAIN_VALID_FLAGS, domains, domainCount);
PointerByReference domainsPointerRef = new PointerByReference();
int rc = Netapi32.INSTANCE.DsEnumerateDomainTrusts(serverName,
DsGetDC.DS_DOMAIN_VALID_FLAGS, domainsPointerRef, domainCount);
if(W32Errors.NO_ERROR != rc) {
throw new Win32Exception(rc);
}
try {
DS_DOMAIN_TRUSTS domains = new DS_DOMAIN_TRUSTS(domainsPointerRef.getValue());
int domainCountValue = domainCount.getValue();
ArrayList<DomainTrust> trusts = new ArrayList<DomainTrust>(domainCountValue);
for(DS_DOMAIN_TRUSTS trust : domains.getTrusts(domainCountValue)) {
for(DS_DOMAIN_TRUSTS trust : (DS_DOMAIN_TRUSTS[]) domains.toArray(new DS_DOMAIN_TRUSTS[domainCountValue])) {
DomainTrust t = new DomainTrust();
if (trust.DnsDomainName != null) {
t.DnsDomainName = trust.DnsDomainName.toString();
Expand All @@ -648,7 +648,7 @@ public static DomainTrust[] getDomainTrusts(String serverName) {
}
return trusts.toArray(new DomainTrust[0]);
} finally {
rc = Netapi32.INSTANCE.NetApiBufferFree(domains.getPointer().getPointer(0));
rc = Netapi32.INSTANCE.NetApiBufferFree(domainsPointerRef.getValue());
if(W32Errors.NO_ERROR != rc) {
throw new Win32Exception(rc);
}
Expand Down