/* Editor Settings: expandtabs and use 4 spaces for indentation * ex: set softtabstop=4 tabstop=8 expandtab shiftwidth=4: * */ /* * Copyright Likewise Software * All rights reserved. * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the license, or (at * your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser * General Public License for more details. You should have received a copy * of the GNU Lesser General Public License along with this program. If * not, see . * * LIKEWISE SOFTWARE MAKES THIS SOFTWARE AVAILABLE UNDER OTHER LICENSING * TERMS AS WELL. IF YOU HAVE ENTERED INTO A SEPARATE LICENSE AGREEMENT * WITH LIKEWISE SOFTWARE, THEN YOU MAY ELECT TO USE THE SOFTWARE UNDER THE * TERMS OF THAT SOFTWARE LICENSE AGREEMENT INSTEAD OF THE TERMS OF THE GNU * LESSER GENERAL PUBLIC LICENSE, NOTWITHSTANDING THE ABOVE NOTICE. IF YOU * HAVE QUESTIONS, OR WISH TO REQUEST A COPY OF THE ALTERNATE LICENSING * TERMS OFFERED BY LIKEWISE SOFTWARE, PLEASE CONTACT LIKEWISE SOFTWARE AT * license@likewisesoftware.com */ /* * Copyright (C) Likewise Software. All rights reserved. * * Module Name: * * LMaccess.h * * Abstract: * * Remote Procedure Call (RPC) Client Interface * * Network Management API, aka LanMan API (rpc client library) * * Authors: Rafal Szczesniak (rafal@likewise.com) */ #ifndef _LM_ACCESS_H_ #define _LM_ACCESS_H_ #include #include // // USER_INFO levels // typedef struct _USER_INFO_0 { PWSTR usri0_name; } USER_INFO_0, *PUSER_INFO_0; typedef struct _USER_INFO_1 { PWSTR usri1_name; PWSTR usri1_password; DWORD usri1_password_age; DWORD usri1_priv; PWSTR usri1_home_dir; PWSTR usri1_comment; DWORD usri1_flags; PWSTR usri1_script_path; } USER_INFO_1, *PUSER_INFO_1; typedef struct _USER_INFO_2 { PWSTR usri2_name; PWSTR usri2_password; DWORD usri2_password_age; DWORD usri2_priv; PWSTR usri2_home_dir; PWSTR usri2_comment; DWORD usri2_flags; PWSTR usri2_script_path; DWORD usri2_auth_flags; PWSTR usri2_full_name; PWSTR usri2_usr_comment; PWSTR usri2_parms; PWSTR usri2_workstations; DWORD usri2_last_logon; DWORD usri2_last_logoff; DWORD usri2_acct_expires; DWORD usri2_max_storage; DWORD usri2_units_per_week; PBYTE usri2_logon_hours; DWORD usri2_bad_pw_count; DWORD usri2_num_logons; PWSTR usri2_logon_server; DWORD usri2_country_code; DWORD usri2_code_page; } USER_INFO_2, *PUSER_INFO_2; typedef struct _USER_INFO_3 { PWSTR usri3_name; PWSTR usri3_password; DWORD usri3_password_age; DWORD usri3_priv; PWSTR usri3_home_dir; PWSTR usri3_comment; DWORD usri3_flags; PWSTR usri3_script_path; DWORD usri3_auth_flags; PWSTR usri3_full_name; PWSTR usri3_usr_comment; PWSTR usri3_parms; PWSTR usri3_workstations; DWORD usri3_last_logon; DWORD usri3_last_logoff; DWORD usri3_acct_expires; DWORD usri3_max_storage; DWORD usri3_units_per_week; PBYTE usri3_logon_hours; DWORD usri3_bad_pw_count; DWORD usri3_num_logons; PWSTR usri3_logon_server; DWORD usri3_country_code; DWORD usri3_code_page; DWORD usri3_user_id; DWORD usri3_primary_group_id; PWSTR usri3_profile; PWSTR usri3_home_dir_drive; DWORD usri3_password_expired; } USER_INFO_3, *PUSER_INFO_3; typedef struct _USER_INFO_4 { PWSTR usri4_name; PWSTR usri4_password; DWORD usri4_password_age; DWORD usri4_priv; PWSTR usri4_home_dir; PWSTR usri4_comment; DWORD usri4_flags; PWSTR usri4_script_path; DWORD usri4_auth_flags; PWSTR usri4_full_name; PWSTR usri4_usr_comment; PWSTR usri4_parms; PWSTR usri4_workstations; DWORD usri4_last_logon; DWORD usri4_last_logoff; DWORD usri4_acct_expires; DWORD usri4_max_storage; DWORD usri4_units_per_week; PBYTE usri4_logon_hours; DWORD usri4_bad_pw_count; DWORD usri4_num_logons; PWSTR usri4_logon_server; DWORD usri4_country_code; DWORD usri4_code_page; PSID usri4_user_sid; DWORD usri4_primary_group_id; PWSTR usri4_profile; PWSTR usri4_home_dir_drive; DWORD usri4_password_expired; } USER_INFO_4, *PUSER_INFO_4; typedef struct _USER_INFO_10 { PWSTR usri10_name; PWSTR usri10_comment; PWSTR usri10_usr_comment; PWSTR usri10_full_name; } USER_INFO_10, *PUSER_INFO_10; typedef struct _USER_INFO_11 { PWSTR usri11_name; PWSTR usri11_comment; PWSTR usri11_usr_comment; PWSTR usri11_full_name; DWORD usri11_priv; DWORD usri11_auth_flags; DWORD usri11_password_age; PWSTR usri11_home_dir; PWSTR usri11_parms; DWORD usri11_last_logon; DWORD usri11_last_logoff; DWORD usri11_bad_pw_count; DWORD usri11_num_logons; PWSTR usri11_logon_server; DWORD usri11_country_code; PWSTR usri11_workstations; DWORD usri11_max_storage; DWORD usri11_units_per_week; PBYTE usri11_logon_hours; DWORD usri11_code_page; } USER_INFO_11, *PUSER_INFO_11; typedef struct _USER_INFO_20 { PWSTR usri20_name; PWSTR usri20_full_name; PWSTR usri20_comment; DWORD usri20_flags; DWORD usri20_user_id; } USER_INFO_20, *PUSER_INFO_20; typedef struct _USER_INFO_23 { PWSTR usri23_name; PWSTR usri23_full_name; PWSTR usri23_comment; PSID usri23_user_sid; } USER_INFO_23, *PUSER_INFO_23; typedef struct _USER_INFO_1003 { PWSTR usri1003_password; } USER_INFO_1003, *PUSER_INFO_1003; typedef struct _USER_INFO_1007 { PWSTR usri1007_comment; } USER_INFO_1007, *PUSER_INFO_1007; typedef struct _USER_INFO_1008 { DWORD usri1008_flags; } USER_INFO_1008, *PUSER_INFO_1008; typedef struct _USER_INFO_1011 { PWSTR usri1011_full_name; } USER_INFO_1011, *PUSER_INFO_1011; // // LOCALGROUP_USERS_INFO levels // typedef struct _LOCALGROUP_USERS_INFO_0 { PWSTR lgrui0_name; } LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0; // // LOCALGROUP_INFO levels // typedef struct _LOCALGROUP_INFO_0 { PWSTR lgrpi0_name; } LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0; typedef struct _LOCALGROUP_INFO_1 { PWSTR lgrpi1_name; PWSTR lgrpi1_comment; } LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1; typedef struct _LOCALGROUP_INFO_1002 { PWSTR lgrpi1002_comment; } LOCALGROUP_INFO_1002, *PLOCALGROUP_INFO_1002; typedef struct _LOCALGROUP_MEMBERS_INFO_0 { PSID lgrmi0_sid; } LOCALGROUP_MEMBERS_INFO_0, *PLOCALGROUP_MEMBERS_INFO_0; typedef struct _LOCALGROUP_MEMBERS_INFO_3 { PWSTR lgrmi3_domainandname; } LOCALGROUP_MEMBERS_INFO_3, *PLOCALGROUP_MEMBERS_INFO_3; typedef WINERR NET_API_STATUS; NET_API_STATUS NetUserEnum( PCWSTR pwszHostname, DWORD dwLevel, DWORD dwFilter, PVOID *ppBuffer, DWORD dwMaxBufferSize, PDWORD pdwNumEntries, PDWORD pdwTotalNumEntries, PDWORD pdwResume ); NET_API_STATUS NetUserAdd( PCWSTR pwszHostname, DWORD dwLevel, PVOID pBuffer, PDWORD pdwParmErr ); NET_API_STATUS NetUserDel( PCWSTR pwszHostname, PCWSTR pwszUsername ); NET_API_STATUS NetUserGetInfo( PCWSTR pwszHostname, PCWSTR pwszUsername, DWORD dwLevel, PVOID *ppBuffer ); NET_API_STATUS NetUserSetInfo( PCWSTR pwszHostname, PCWSTR pwszUsername, DWORD dwLevel, PVOID pBuffer, PDWORD pdwParmErr ); NET_API_STATUS NetUserGetLocalGroups( PCWSTR pwszHostname, PCWSTR pwszUsername, DWORD dwLevel, DWORD dwFlags, PVOID *ppBuffer, DWORD dwMaxBufferSize, PDWORD pdwNumEntries, PDWORD pdwTotalNumEntries ); NET_API_STATUS NetLocalGroupAdd( PCWSTR pwszHostname, DWORD dwLevel, PVOID pBuffer, PDWORD pdwParmErr ); NET_API_STATUS NetLocalGroupDel( PCWSTR pwszHostname, PCWSTR pwszGroupname ); NET_API_STATUS NetLocalGroupEnum( PCWSTR pwszHostname, DWORD dwLevel, PVOID *ppBuffer, DWORD dwBufferMaxSize, PDWORD pdwNumEntries, PDWORD pdwTotalNumEntries, PDWORD pdwResume ); NET_API_STATUS NetLocalGroupSetInfo( PCWSTR pwszHostname, PCWSTR pwszGroupname, DWORD dwLevel, PVOID pBuffer, PDWORD pdwParmErr ); NET_API_STATUS NetLocalGroupGetInfo( PCWSTR pwszHostname, PCWSTR pwszGroupname, DWORD dwLevel, PVOID *ppBuffer ); NET_API_STATUS NetLocalGroupAddMembers( PCWSTR pwszHostname, PCWSTR pwszGroupname, DWORD dwLevel, PVOID pBuffer, DWORD dwNumEntries ); NET_API_STATUS NetLocalGroupDelMembers( PCWSTR pwszHostname, PCWSTR pwszGroupname, DWORD dwLevel, PVOID pBuffer, DWORD dwNumEntries ); NET_API_STATUS NetLocalGroupGetMembers( PCWSTR pwszHostname, PCWSTR pwszLocalGroupName, DWORD dwLevel, PVOID *ppBuffer, DWORD dwMaxBufferSize, PDWORD pdwNumEntries, PDWORD pdwTotalNumEntries, PDWORD pdwResume ); NET_API_STATUS NetApiBufferFree( PVOID pBuffer ); NET_API_STATUS NetUserChangePassword( PCWSTR pwszDomain, PCWSTR pwszUsername, PCWSTR pwszOldPassword, PCWSTR pwszNewPassword ); NET_API_STATUS NetGetDomainName( PCWSTR pwszHostname, PWSTR *ppwszDomainName ); /* this allows functions to return as much data as available */ #define MAX_PREFERRED_LENGTH (-1) /* filter flags for NetUserEnum function */ #define FILTER_TEMP_DUPLICATE_ACCOUNT 0x0001 #define FILTER_NORMAL_ACCOUNT 0x0002 #define FILTER_INTERDOMAIN_TRUST_ACCOUNT 0x0008 #define FILTER_WORKSTATION_TRUST_ACCOUNT 0x0010 #define FILTER_SERVER_TRUST_ACCOUNT 0x0020 /* account flags */ #define UF_SCRIPT 0x00000001 #define UF_ACCOUNTDISABLE 0x00000002 #define UF_HOMEDIR_REQUIRED 0x00000008 #define UF_LOCKOUT 0x00000010 #define UF_PASSWD_NOTREQD 0x00000020 #define UF_PASSWD_CANT_CHANGE 0x00000040 #define UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED 0x00000080 #define UF_TEMP_DUPLICATE_ACCOUNT 0x00000100 #define UF_NORMAL_ACCOUNT 0x00000200 #define UF_INTERDOMAIN_TRUST_ACCOUNT 0x00000800 #define UF_WORKSTATION_TRUST_ACCOUNT 0x00001000 #define UF_SERVER_TRUST_ACCOUNT 0x00002000 #define UF_DONT_EXPIRE_PASSWD 0x00010000 #define UF_SMARTCARD_REQUIRED 0x00040000 #define UF_TRUSTED_FOR_DELEGATION 0x00080000 #define UF_NOT_DELEGATED 0x00100000 #define UF_USE_DES_KEY_ONLY 0x00200000 #define UF_DONT_REQUIRE_PREAUTH 0x00400000 #define UF_PASSWORD_EXPIRED 0x00800000 #define UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION 0x01000000 /* user privileges flags */ #define USER_PRIV_GUEST 0x00000000 #define USER_PRIV_USER 0x00000001 #define USER_PRIV_ADMIN 0x00000002 #endif /* _LM_ACCESS_H_ */ /* local variables: mode: c c-basic-offset: 4 indent-tabs-mode: nil tab-width: 4 end: */