com.sun.jna.platform.win32.Netapi32 Maven / Gradle / Ivy
Show all versions of jna-platform Show documentation
/* Copyright (c) 2010 Daniel Doubrovkine, All Rights Reserved
*
* The contents of this file is dual-licensed under 2
* alternative Open Source/Free licenses: LGPL 2.1 or later and
* Apache License 2.0. (starting with JNA version 4.0.0).
*
* You can freely decide which license you want to apply to
* the project.
*
* You may obtain a copy of the LGPL License at:
*
* http://www.gnu.org/licenses/licenses.html
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "LGPL2.1".
*
* You may obtain a copy of the Apache License at:
*
* http://www.apache.org/licenses/
*
* A copy is also included in the downloadable source code package
* containing JNA, in file "AL2.0".
*/
package com.sun.jna.platform.win32;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
import com.sun.jna.Structure.FieldOrder;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.DsGetDC.PDOMAIN_CONTROLLER_INFO;
import com.sun.jna.platform.win32.Guid.GUID;
import com.sun.jna.platform.win32.NTSecApi.PLSA_FOREST_TRUST_INFORMATION;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIOptions;
import com.sun.jna.win32.W32APITypeMapper;
/**
* Netapi32.dll Interface.
* @author dblock[at]dblock.org
*/
public interface Netapi32 extends StdCallLibrary {
Netapi32 INSTANCE = Native.load("Netapi32", Netapi32.class, W32APIOptions.DEFAULT_OPTIONS);
int MAX_PREFERRED_LENGTH = -1;
/**
* Contains information about the session, including name of the computer; name
* of the user; and active and idle times for the session.
*/
@FieldOrder({ "sesi10_cname", "sesi10_username", "sesi10_time", "sesi10_idle_time" })
class SESSION_INFO_10 extends Structure {
public String sesi10_cname;
public String sesi10_username;
public int sesi10_time;
public int sesi10_idle_time;
public SESSION_INFO_10() {
super(W32APITypeMapper.UNICODE);
}
public SESSION_INFO_10(Pointer p) {
super(p, Structure.ALIGN_DEFAULT, W32APITypeMapper.UNICODE);
read();
}
}
/**
* Provides information about sessions established on a server.
*
* @param servername
* Pointer to a string that specifies the DNS or NetBIOS name of the
* remote server on which the function is to execute. If this
* parameter is NULL, the local computer is used.
* @param UncClientName
* Pointer to a string that specifies the name of the computer
* session for which information is to be returned. If this parameter
* is NULL, NetSessionEnum returns information for all computer
* sessions on the server.
* @param username
* Pointer to a string that specifies the name of the user for which
* information is to be returned. If this parameter is NULL,
* NetSessionEnum returns information for all users.
* @param level
* Specifies the information level of the data. This parameter can be
* one of 0, 1, 2, 10, 502.
* @param bufptr
* Pointer to the buffer that receives the data. The format of this
* data depends on the value of the level parameter, for example
* {@code SESSION_INFO_0} for level 0.
*
* This buffer is allocated by the system and must be freed using the
* {@link #NetApiBufferFree} function. Note that you must free the
* buffer even if the function fails with {@code ERROR_MORE_DATA}.
* @param prefmaxlen
* Specifies the preferred maximum length of returned data, in bytes.
* If you specify {@link #MAX_PREFERRED_LENGTH}, the function
* allocates the amount of memory required for the data. If you
* specify another value in this parameter, it can restrict the
* number of bytes that the function returns. If the buffer size is
* insufficient to hold all entries, the function returns
* {@code ERROR_MORE_DATA}.
* @param entriesread
* Pointer to a value that receives the count of elements actually
* enumerated.
* @param totalentries
* Pointer to a value that receives the total number of entries that
* could have been enumerated from the current resume position. Note
* that applications should consider this value only as a hint.
* @param resume_handle
* Pointer to a value that contains a resume handle which is used to
* continue an existing session search. The handle should be zero on
* the first call and left unchanged for subsequent calls. If
* resume_handle is NULL, no resume handle is stored.
* @return If the function succeeds, the return value is NERR_Success (0). If
* the function fails, the return value is an error code.
*/
int NetSessionEnum(WString servername, WString UncClientName, WString username, int level,
PointerByReference bufptr, int prefmaxlen, IntByReference entriesread, IntByReference totalentries,
IntByReference resume_handle);
/**
* Retrieves join status information for the specified computer.
*
* @param lpServer
* Specifies the DNS or NetBIOS name of the computer on which to
* call the function.
* @param lpNameBuffer
* Receives the NetBIOS name of the domain or workgroup to which
* the computer is joined.
* @param BufferType
* Join status of the specified computer.
* @return If the function succeeds, the return value is NERR_Success. If
* the function fails, the return value is a system error code.
*/
public int NetGetJoinInformation(String lpServer,
PointerByReference lpNameBuffer, IntByReference BufferType);
/**
* Frees the memory that the NetApiBufferAllocate function allocates.
*
* @param buffer buffer
* @return If the function succeeds, the return value is NERR_Success. If
* the function fails, the return value is a system error code.
*/
public int NetApiBufferFree(Pointer buffer);
/**
* Returns information about each local group account on the specified
* server.
*
* @param serverName
* Specifies the DNS or NetBIOS name of the remote server on
* which the function is to execute. If this parameter is NULL,
* the local computer is used.
* @param level
* Specifies the information level of the data.
* @param bufptr
* Pointer to the address of the buffer that receives the
* information structure.
* @param prefmaxlen
* Specifies the preferred maximum length of returned data, in
* bytes.
* @param entriesread
* Pointer to a value that receives the count of elements
* actually enumerated.
* @param totalentries
* Pointer to a value that receives the approximate total number
* of entries that could have been enumerated from the current
* resume position.
* @param resume_handle
* Pointer to a value that contains a resume handle that is used
* to continue an existing local group search.
* @return If the function succeeds, the return value is NERR_Success.
*/
public int NetLocalGroupEnum(String serverName, int level,
PointerByReference bufptr, int prefmaxlen,
IntByReference entriesread, IntByReference totalentries,
IntByReference resume_handle);
/**
* Returns the name of the primary domain controller (PDC).
*
* @param serverName
* Specifies the DNS or NetBIOS name of the remote server on which the function is
* to execute. If this parameter is NULL, the local computer is used.
* @param domainName
* Specifies the name of the domain.
* @param bufptr
* Receives a string that specifies the server name of the PDC of the domain.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetGetDCName(String serverName, String domainName,
PointerByReference bufptr);
/**
* The NetGroupEnum function retrieves information about each global group
* in the security database, which is the security accounts manager (SAM) database or,
* in the case of domain controllers, the Active Directory.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the
* remote server on which the function is to execute. If this parameter is NULL,
* the local computer is used.
* @param level
* Specifies the information level of the data.
* @param bufptr
* Pointer to the buffer to receive the global group information structure.
* The format of this data depends on the value of the level parameter.
* @param prefmaxlen
* Specifies the preferred maximum length of the returned data, in bytes.
* If you specify MAX_PREFERRED_LENGTH, the function allocates the amount of
* memory required to hold the data. If you specify another value in this
* parameter, it can restrict the number of bytes that the function returns.
* If the buffer size is insufficient to hold all entries, the function
* returns ERROR_MORE_DATA.
* @param entriesread
* Pointer to a value that receives the count of elements actually enumerated.
* @param totalentries
* Pointer to a value that receives the total number of entries that could have
* been enumerated from the current resume position. The total number of entries
* is only a hint.
* @param resume_handle
* Pointer to a variable that contains a resume handle that is used to continue
* the global group enumeration. The handle should be zero on the first call and
* left unchanged for subsequent calls. If resume_handle is NULL, no resume handle
* is stored.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetGroupEnum(String servername, int level, PointerByReference bufptr,
int prefmaxlen, IntByReference entriesread, IntByReference totalentries,
IntByReference resume_handle);
/**
* The NetUserEnum function provides information about all user accounts on a server.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the
* remote server on which the function is to execute. If this parameter is NULL,
* the local computer is used.
* @param level
* Specifies the information level of the data.
* @param filter
* Specifies a value that filters the account types for enumeration.
* @param bufptr
* Pointer to the buffer that receives the data. The format of this data depends
* on the value of the level parameter. This buffer is allocated by the system and
* must be freed using the NetApiBufferFree function. Note that you must free the
* buffer even if the function fails with ERROR_MORE_DATA.
* @param prefmaxlen
* Specifies the preferred maximum length, in 8-bit bytes of returned data. If you
* specify MAX_PREFERRED_LENGTH, the function allocates the amount of memory
* required for the data. If you specify another value in this parameter, it can
* restrict the number of bytes that the function returns. If the buffer size is
* insufficient to hold all entries, the function returns ERROR_MORE_DATA.
* @param entriesread
* Pointer to a value that receives the count of elements actually enumerated.
* @param totalentries
* Pointer to a value that receives the total number of entries that could have
* been enumerated from the current resume position. Note that applications should
* consider this value only as a hint.
* @param resume_handle
* Pointer to a value that contains a resume handle which is used to continue an
* existing user search. The handle should be zero on the first call and left
* unchanged for subsequent calls. If resume_handle is NULL, then no resume
* handle is stored.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserEnum(String servername, int level, int filter, PointerByReference bufptr,
int prefmaxlen, IntByReference entriesread, IntByReference totalentries,
IntByReference resume_handle);
/**
* The NetUserGetGroups function retrieves a list of global groups to which a
* specified user belongs.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the
* remote server on which the function is to execute. If this parameter is NULL,
* the local computer is used.
* @param username
* Pointer to a constant string that specifies the name of the user to search for
* in each group account. For more information, see the following Remarks section.
* @param level
* Specifies the information level of the data.
* @param bufptr
* Pointer to the buffer that receives the data. This buffer is allocated by the
* system and must be freed using the NetApiBufferFree function. Note that you must
* free the buffer even if the function fails with ERROR_MORE_DATA.
* @param prefmaxlen
* Specifies the preferred maximum length of returned data, in bytes. If you specify
* MAX_PREFERRED_LENGTH, the function allocates the amount of memory required for the
* data. If you specify another value in this parameter, it can restrict the number
* of bytes that the function returns. If the buffer size is insufficient to hold
* all entries, the function returns ERROR_MORE_DATA.
* @param entriesread
* Pointer to a value that receives the count of elements actually retrieved.
* @param totalentries
* Pointer to a value that receives the total number of entries that could have been retrieved.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserGetGroups(String servername, String username, int level,
PointerByReference bufptr, int prefmaxlen,
IntByReference entriesread, IntByReference totalentries);
/**
* The NetUserGetLocalGroups function retrieves a list of local groups to which a
* specified user belongs.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the remote
* server on which the function is to execute. If this parameter is NULL, the local
* computer is used.
* @param username
* Pointer to a constant string that specifies the name of the user for which to return
* local group membership information. If the string is of the form DomainName\UserName
* the user name is expected to be found on that domain. If the string is of the form
* UserName, the user name is expected to be found on the server specified by the
* servername parameter.
* @param level
* Specifies the information level of the data.
* @param flags
* Specifies a bitmask of flags. Currently, only the value LG_INCLUDE_INDIRECT is
* defined. If this bit is set, the function also returns the names of the local
* groups in which the user is indirectly a member (that is, the user has membership
* in a global group that is itself a member of one or more local groups).
* @param bufptr
* Pointer to the buffer that receives the data. The format of this data depends on
* the value of the level parameter. This buffer is allocated by the system and must
* be freed using the NetApiBufferFree function. Note that you must free the buffer
* even if the function fails with ERROR_MORE_DATA.
* @param prefmaxlen
* Specifies the preferred maximum length of returned data, in bytes. If you specify
* MAX_PREFERRED_LENGTH, the function allocates the amount of memory required for the
* data. If you specify another value in this parameter, it can restrict the number of
* bytes that the function returns. If the buffer size is insufficient to hold all
* entries, the function returns ERROR_MORE_DATA. For more information, see Network
* Management Function Buffers and Network Management Function Buffer Lengths.
* @param entriesread
* Pointer to a value that receives the count of elements actually enumerated.
* @param totalentries
* Pointer to a value that receives the total number of entries that could have been enumerated.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserGetLocalGroups(String servername, String username, int level,
int flags, PointerByReference bufptr, int prefmaxlen,
IntByReference entriesread, IntByReference totalentries);
/**
* The NetUserAdd function adds a user account and assigns a password and privilege level.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the remote server
* on which the function is to execute.
* @param level
* Specifies the information level of the data.
* @param buf
* Pointer to the buffer that specifies the data. The format of this data depends on the
* value of the level parameter.
* @param parm_err
* Pointer to a value that receives the index of the first member of the user information
* structure that causes ERROR_INVALID_PARAMETER. If this parameter is NULL, the index is
* not returned on error.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserAdd(String servername, int level,
Structure buf, IntByReference parm_err);
/**
* The NetUserDel function deletes a user account from a server.
* @param servername
* Pointer to a constant string that specifies the DNS or NetBIOS name of the remote
* server on which the function is to execute. If this parameter is NULL, the local
* computer is used.
* @param username
* Pointer to a constant string that specifies the name of the user account to delete.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserDel(String servername, String username);
/**
* The NetUserChangePassword function changes a user's password for a specified
* network server or domain.
* @param domainname
* Pointer to a constant string that specifies the DNS or NetBIOS name of a remote
* server or domain on which the function is to execute. If this parameter is NULL,
* the logon domain of the caller is used.
* @param username
* Pointer to a constant string that specifies a user name. The NetUserChangePassword
* function changes the password for the specified user. If this parameter is NULL,
* the logon name of the caller is used.
* @param oldpassword
* Pointer to a constant string that specifies the user's old password.
* @param newpassword
* Pointer to a constant string that specifies the user's new password.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserChangePassword(String domainname, String username,
String oldpassword, String newpassword);
/**
* The DsGetDcName function returns the name of a domain controller in a specified domain.
* This function accepts additional domain controller selection criteria to indicate
* preference for a domain controller with particular characteristics.
* @param ComputerName
* Pointer to a null-terminated string that specifies the name of the server to process
* this function. Typically, this parameter is NULL, which indicates that the local
* computer is used.
* @param DomainName
* Pointer to a null-terminated string that specifies the name of the domain or application
* partition to query. This name can either be a DNS style name, for example, fabrikam.com,
* or a flat-style name, for example, Fabrikam. If a DNS style name is specified, the name
* may be specified with or without a trailing period.
* @param DomainGuid
* Pointer to a GUID structure that specifies the GUID of the domain queried. If DomainGuid
* is not NULL and the domain specified by DomainName or ComputerName cannot be found,
* DsGetDcName attempts to locate a domain controller in the domain having the GUID specified
* by DomainGuid.
* @param SiteName
* Pointer to a null-terminated string that specifies the name of the site where the returned
* domain controller should physically exist. If this parameter is NULL, DsGetDcName attempts
* to return a domain controller in the site closest to the site of the computer specified by
* ComputerName. This parameter should be NULL, by default.
* @param Flags
* Contains a set of flags that provide additional data used to process the request.
* @param DomainControllerInfo
* Pointer to a PDOMAIN_CONTROLLER_INFO value that receives a pointer to a
* DOMAIN_CONTROLLER_INFO structure that contains data about the domain controller selected.
* This structure is allocated by DsGetDcName. The caller must free the structure using
* the NetApiBufferFree function when it is no longer required.
* @return
* If the function returns domain controller data, the return value is ERROR_SUCCESS.
* If the function fails, the return code is one of ERROR_* values.
*/
public int DsGetDcName(String ComputerName, String DomainName, GUID DomainGuid,
String SiteName, int Flags, PDOMAIN_CONTROLLER_INFO DomainControllerInfo);
/**
* The DsGetForestTrustInformationW function obtains forest trust data for a specified domain.
* @param serverName
* Contains the name of the domain controller that DsGetForestTrustInformationW
* is connected to remotely. The caller must be an authenticated user on this server.
* If this parameter is NULL, the local server is used.
* @param trustedDomainName
* Contains the NETBIOS or DNS name of the trusted domain that the forest trust data
* is to be retrieved for. This domain must have the TRUST_ATTRIBUTE_FOREST_TRANSITIVE
* trust attribute. If this parameter is NULL, the forest trust data for the domain
* hosted by ServerName is retrieved.
* @param Flags
* Contains a set of flags that modify the behavior of this function.
* DS_GFTI_UPDATE_TDO: If this flag is set, DsGetForestTrustInformationW will update the
* forest trust data of the trusted domain identified by the TrustedDomainName parameter.
* @param ForestTrustInfo
* Pointer to an LSA_FOREST_TRUST_INFORMATION structure pointer that receives the forest
* trust data that describes the namespaces claimed by the domain specified by
* TrustedDomainName. The Time member of all returned records will be zero.
* @return
* Returns NO_ERROR if successful or a Win32 error code otherwise.
*/
public int DsGetForestTrustInformation(String serverName, String trustedDomainName, int Flags,
PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo);
/**
* The DsEnumerateDomainTrusts function obtains domain trust data for a specified domain.
* @param serverName
* Pointer to a null-terminated string that specifies the name of a computer in the domain to
* obtain the trust information for. This computer must be running the Windows 2000 or later
* operating system. If this parameter is NULL, the name of the local computer is used.
* The caller must be an authenticated user in this domain.
* @param Flags
* Contains a set of flags that determines which domain trusts to enumerate.
* @param Domains
* 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
* Pointer to a ULONG value that receives the number of elements returned in the Domains array.
* @return
* Returns ERROR_SUCCESS if successful or a Win32 error code otherwise.
*/
public int DsEnumerateDomainTrusts(String serverName, int Flags,
PointerByReference Domains, IntByReference DomainCount);
/**
* The NetUserGetInfo function retrieves information about a particular user account on a server.
* @param servername
* A pointer to a constant string that specifies the DNS or NetBIOS name of the remote server on
* which the function is to execute. If this parameter is NULL, the local computer is used.
* @param username
* A pointer to a constant string that specifies the name of the user account for which to return information.
* For more information, see the following Remarks section.
* @param level
* The information level of the data. This parameter can be one of the following values.
* Value Meaning
* 0 Return the user account name. The bufptr parameter points to a USER_INFO_0 structure.
* 1 Return detailed information about the user account. The bufptr parameter points to a USER_INFO_1 structure.
* 2 Return detailed information and additional attributes about the user account. The bufptr parameter points to a USER_INFO_2 structure.
* 3 Return detailed information and additional attributes about the user account. This level is valid only on servers. The bufptr parameter points to a USER_INFO_3 structure. Note that it is recommended that you use USER_INFO_4 instead.
* 4 Return detailed information and additional attributes about the user account. This level is valid only on servers. The bufptr parameter points to a USER_INFO_4 structure. Windows 2000: This level is not supported.
* 10 Return user and account names and comments. The bufptr parameter points to a USER_INFO_10 structure.
* 11 Return detailed information about the user account. The bufptr parameter points to a USER_INFO_11 structure.
* 20 Return the user's name and identifier and various account attributes. The bufptr parameter points to a USER_INFO_20 structure. Note that on Windows XP and later, it is recommended that you use USER_INFO_23 instead.
* 23 Return the user's name and identifier and various account attributes. The bufptr parameter points to a USER_INFO_23 structure. Windows 2000: This level is not supported.
* @param bufptr
* A pointer to the buffer that receives the data.
* The format of this data depends on the value of the level parameter.
* This buffer is allocated by the system and must be freed using the NetApiBufferFree function.
* For more information, see Network Management Function Buffers and Network Management Function Buffer Lengths.
* @return
* If the function succeeds, the return value is NERR_Success.
*/
public int NetUserGetInfo(String servername, String username, int level, PointerByReference bufptr);
/**
* Shares a server resource.
*
* @param servername [in]
* Pointer to a string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute.
* If this parameter is NULL, the local computer is used.
* @param level [in]
* Specifies the information level of the data. This parameter can be one of the following values:
* 2 - Specifies information about the shared resource, including the name of the resource, type and permissions, and number of connections.
* The buf parameter points to a SHARE_INFO_2 structure.
* 502 - Specifies information about the shared resource, including the name of the resource, type and permissions, number of connections, and other pertinent information.
* The buf parameter points to a SHARE_INFO_502 structure.
* 503 - Specifies information about the shared resource, including the name of the resource, type and permissions, number of connections, and other pertinent information.
* The buf parameter points to a SHARE_INFO_503 structure.
* @param buf [in]
* Pointer to the buffer that specifies the data. The format of this data depends on the value of the level
parameter.
* For more information, see Network Management Function Buffers (https://msdn.microsoft.com/en-us/library/windows/desktop/aa370676(v=vs.85).aspx)
* @param parm_err [out]
* Pointer to a value that receives the index of the first member of the share information structure that causes the ERROR_INVALID_PARAMETER error. If this parameter is NULL, the
* index is not returned on error. For more information, see the NetShareSetInfo function.
* @return If the function succeeds, the return value is NERR_Success. If the function fails, the return value can be an error code as seen on MSDN.
*/
public int NetShareAdd(String servername, int level, Pointer buf, IntByReference parm_err);
/**
* Deletes a share name from a server's list of shared resources, disconnecting all connections to the shared resource.
*
* @param servername [in]
* Pointer to a string that specifies the DNS or NetBIOS name of the remote server on which the function is to execute.
* If this parameter is NULL, the local computer is used.
* @param netname [in]
* Pointer to a string that specifies the name of the share to delete.
* @param reserved
* Reserved, must be zero.
* @return If the function succeeds, the return value is LMErr.NERR_Success.
* If the function fails, the return value can be an error code as seen on MSDN.
*/
public int NetShareDel(String servername, String netname, int reserved);
}