📄 lmaccess.h
字号:
NetLocalGroupGetMembers (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR localgroupname,
IN DWORD level,
OUT LPBYTE *bufptr,
IN DWORD prefmaxlen,
OUT LPDWORD entriesread,
OUT LPDWORD totalentries,
IN OUT PDWORD_PTR resumehandle
);
NET_API_STATUS NET_API_FUNCTION
NetLocalGroupSetMembers (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR groupname,
IN DWORD level,
IN LPBYTE buf,
IN DWORD totalentries
);
NET_API_STATUS NET_API_FUNCTION
NetLocalGroupAddMembers (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR groupname,
IN DWORD level,
IN LPBYTE buf,
IN DWORD totalentries
);
NET_API_STATUS NET_API_FUNCTION
NetLocalGroupDelMembers (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR groupname,
IN DWORD level,
IN LPBYTE buf,
IN DWORD totalentries
);
//
// Data Structures - LocalGroup
//
typedef struct _LOCALGROUP_INFO_0 {
LPWSTR lgrpi0_name;
}LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
typedef struct _LOCALGROUP_INFO_1 {
LPWSTR lgrpi1_name;
LPWSTR lgrpi1_comment;
}LOCALGROUP_INFO_1, *PLOCALGROUP_INFO_1, *LPLOCALGROUP_INFO_1;
typedef struct _LOCALGROUP_INFO_1002 {
LPWSTR lgrpi1002_comment;
}LOCALGROUP_INFO_1002, *PLOCALGROUP_INFO_1002, *LPLOCALGROUP_INFO_1002;
typedef struct _LOCALGROUP_MEMBERS_INFO_0 {
PSID lgrmi0_sid;
} LOCALGROUP_MEMBERS_INFO_0, *PLOCALGROUP_MEMBERS_INFO_0,
*LPLOCALGROUP_MEMBERS_INFO_0;
typedef struct _LOCALGROUP_MEMBERS_INFO_1 {
PSID lgrmi1_sid;
SID_NAME_USE lgrmi1_sidusage;
LPWSTR lgrmi1_name;
} LOCALGROUP_MEMBERS_INFO_1, *PLOCALGROUP_MEMBERS_INFO_1,
*LPLOCALGROUP_MEMBERS_INFO_1;
typedef struct _LOCALGROUP_MEMBERS_INFO_2 {
PSID lgrmi2_sid;
SID_NAME_USE lgrmi2_sidusage;
LPWSTR lgrmi2_domainandname;
} LOCALGROUP_MEMBERS_INFO_2, *PLOCALGROUP_MEMBERS_INFO_2,
*LPLOCALGROUP_MEMBERS_INFO_2;
typedef struct _LOCALGROUP_MEMBERS_INFO_3 {
LPWSTR lgrmi3_domainandname;
} LOCALGROUP_MEMBERS_INFO_3, *PLOCALGROUP_MEMBERS_INFO_3,
*LPLOCALGROUP_MEMBERS_INFO_3;
typedef struct _LOCALGROUP_USERS_INFO_0 {
LPWSTR lgrui0_name;
} LOCALGROUP_USERS_INFO_0, *PLOCALGROUP_USERS_INFO_0,
*LPLOCALGROUP_USERS_INFO_0;
#define LOCALGROUP_NAME_PARMNUM 1
#define LOCALGROUP_COMMENT_PARMNUM 2
//
// Display Information APIs
//
NET_API_STATUS NET_API_FUNCTION
NetQueryDisplayInformation(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD Level,
IN DWORD Index,
IN DWORD EntriesRequested,
IN DWORD PreferredMaximumLength,
OUT LPDWORD ReturnedEntryCount,
OUT PVOID *SortedBuffer );
NET_API_STATUS NET_API_FUNCTION
NetGetDisplayInformationIndex(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD Level,
IN LPCWSTR Prefix,
OUT LPDWORD Index );
//
// QueryDisplayInformation levels
typedef struct _NET_DISPLAY_USER {
LPWSTR usri1_name;
LPWSTR usri1_comment;
DWORD usri1_flags;
LPWSTR usri1_full_name;
DWORD usri1_user_id;
DWORD usri1_next_index;
} NET_DISPLAY_USER, *PNET_DISPLAY_USER;
typedef struct _NET_DISPLAY_MACHINE {
LPWSTR usri2_name;
LPWSTR usri2_comment;
DWORD usri2_flags;
DWORD usri2_user_id;
DWORD usri2_next_index;
} NET_DISPLAY_MACHINE, *PNET_DISPLAY_MACHINE;
typedef struct _NET_DISPLAY_GROUP {
LPWSTR grpi3_name;
LPWSTR grpi3_comment;
DWORD grpi3_group_id;
DWORD grpi3_attributes;
DWORD grpi3_next_index;
} NET_DISPLAY_GROUP, *PNET_DISPLAY_GROUP;
#endif // _LMLOCALGROUP_
//
// Access Class
//
#ifndef _LMACCESS_
#define _LMACCESS_
//
// Function Prototypes - Access
//
//
// The NetAccess APIs are only available to downlevel
//
#define NetAccessAdd RxNetAccessAdd
NET_API_STATUS NET_API_FUNCTION
NetAccessAdd (
IN LPCWSTR servername OPTIONAL,
IN DWORD level,
IN LPBYTE buf,
OUT LPDWORD parm_err OPTIONAL
);
#define NetAccessEnum RxNetAccessEnum
NET_API_STATUS NET_API_FUNCTION
NetAccessEnum (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR BasePath,
IN DWORD Recursive,
IN DWORD level,
OUT LPBYTE *bufptr,
IN DWORD prefmaxlen,
OUT LPDWORD entriesread,
OUT LPDWORD totalentries,
IN OUT LPDWORD resume_handle OPTIONAL
);
#define NetAccessGetInfo RxNetAccessGetInfo
NET_API_STATUS NET_API_FUNCTION
NetAccessGetInfo (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR resource,
IN DWORD level,
OUT LPBYTE *bufptr
);
#define NetAccessSetInfo RxNetAccessSetInfo
NET_API_STATUS NET_API_FUNCTION
NetAccessSetInfo (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR resource,
IN DWORD level,
IN LPBYTE buf,
OUT LPDWORD parm_err OPTIONAL
);
#define NetAccessDel RxNetAccessDel
NET_API_STATUS NET_API_FUNCTION
NetAccessDel (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR resource
);
#define NetAccessGetUserPerms RxNetAccessGetUserPerms
NET_API_STATUS NET_API_FUNCTION
NetAccessGetUserPerms (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR UGname,
IN LPCWSTR resource,
OUT LPDWORD Perms
);
//
// Data Structures - Access
//
typedef struct _ACCESS_INFO_0 {
LPWSTR acc0_resource_name;
}ACCESS_INFO_0, *PACCESS_INFO_0, *LPACCESS_INFO_0;
typedef struct _ACCESS_INFO_1 {
LPWSTR acc1_resource_name;
DWORD acc1_attr;
DWORD acc1_count;
}ACCESS_INFO_1, *PACCESS_INFO_1, *LPACCESS_INFO_1;
typedef struct _ACCESS_INFO_1002 {
DWORD acc1002_attr;
} ACCESS_INFO_1002, *PACCESS_INFO_1002, *LPACCESS_INFO_1002;
typedef struct _ACCESS_LIST {
LPWSTR acl_ugname;
DWORD acl_access;
}ACCESS_LIST, *PACCESS_LIST, *LPACCESS_LIST;
//
// Special Values and Constants - Access
//
//
// Maximum number of permission entries for each resource.
//
#define MAXPERMENTRIES 64
//
// Bit values for the access permissions. ACCESS_ALL is a handy
// way to specify maximum permissions. These are used in
// acl_access field of access_list structures.
//
#define ACCESS_NONE 0
#define ACCESS_ALL ( ACCESS_READ | \
ACCESS_WRITE | \
ACCESS_CREATE | \
ACCESS_EXEC | \
ACCESS_DELETE | \
ACCESS_ATRIB | \
ACCESS_PERM \
)
#define ACCESS_READ 0x01
#define ACCESS_WRITE 0x02
#define ACCESS_CREATE 0x04
#define ACCESS_EXEC 0x08
#define ACCESS_DELETE 0x10
#define ACCESS_ATRIB 0x20
#define ACCESS_PERM 0x40
#define ACCESS_GROUP 0x8000
//
// Bit values for the acc1_attr field of the ACCESS_INFO_1 structure.
//
#define ACCESS_AUDIT 0x1
#define ACCESS_SUCCESS_OPEN 0x10
#define ACCESS_SUCCESS_WRITE 0x20
#define ACCESS_SUCCESS_DELETE 0x40
#define ACCESS_SUCCESS_ACL 0x80
#define ACCESS_SUCCESS_MASK 0xF0
#define ACCESS_FAIL_OPEN 0x100
#define ACCESS_FAIL_WRITE 0x200
#define ACCESS_FAIL_DELETE 0x400
#define ACCESS_FAIL_ACL 0x800
#define ACCESS_FAIL_MASK 0xF00
#define ACCESS_FAIL_SHIFT 4
//
// Parmnum value for NetAccessSetInfo.
//
#define ACCESS_RESOURCE_NAME_PARMNUM 1
#define ACCESS_ATTR_PARMNUM 2
#define ACCESS_COUNT_PARMNUM 3
#define ACCESS_ACCESS_LIST_PARMNUM 4
//
// the new infolevel counterparts of the old info level + parmnum
//
#define ACCESS_RESOURCE_NAME_INFOLEVEL \
(PARMNUM_BASE_INFOLEVEL + ACCESS_RESOURCE_NAME_PARMNUM)
#define ACCESS_ATTR_INFOLEVEL \
(PARMNUM_BASE_INFOLEVEL + ACCESS_ATTR_PARMNUM)
#define ACCESS_COUNT_INFOLEVEL \
(PARMNUM_BASE_INFOLEVEL + ACCESS_COUNT_PARMNUM)
#define ACCESS_ACCESS_LIST_INFOLEVEL \
(PARMNUM_BASE_INFOLEVEL + ACCESS_ACCESS_LIST_PARMNUM)
//
// ACCESS_LETTERS defines a letter for each bit position in
// the acl_access field of struct access_list. Note that some
// bits have a corresponding letter of ' ' (space).
//
#define ACCESS_LETTERS "RWCXDAP "
#endif // _LMACCESS_
//
// Domain Class
//
#ifndef _LMDOMAIN_
#define _LMDOMAIN_
//
// Function Prototypes - Domain
//
NET_API_STATUS NET_API_FUNCTION
NetGetDCName (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR domainname OPTIONAL,
OUT LPBYTE *bufptr
);
NET_API_STATUS NET_API_FUNCTION
NetGetAnyDCName (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR domainname OPTIONAL,
OUT LPBYTE *bufptr
);
NET_API_STATUS NET_API_FUNCTION
I_NetLogonControl(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD FunctionCode,
IN DWORD QueryLevel,
OUT LPBYTE *Buffer
);
NET_API_STATUS NET_API_FUNCTION
I_NetLogonControl2(
IN LPCWSTR ServerName OPTIONAL,
IN DWORD FunctionCode,
IN DWORD QueryLevel,
IN LPBYTE Data,
OUT LPBYTE *Buffer
);
#ifndef _NTDEF_
typedef LONG NTSTATUS, *PNTSTATUS;
#endif
NTSTATUS NET_API_FUNCTION
NetEnumerateTrustedDomains (
IN LPWSTR ServerName OPTIONAL,
OUT LPWSTR *DomainNames
);
//
// Special Values and Constants - Domain
//
//
// FunctionCode values for I_NetLogonControl.
//
// NOTE : if you change the following NETLOGON_CONTROL_* values,
// change them in net\svcdlls\logonsrv\logon.idl file also.
//
#define NETLOGON_CONTROL_QUERY 1 // No-op: just query
#define NETLOGON_CONTROL_REPLICATE 2 // Force replicate on BDC
#define NETLOGON_CONTROL_SYNCHRONIZE 3 // Force synchronize on BDC
#define NETLOGON_CONTROL_PDC_REPLICATE 4 // Force PDC to broadcast change
#define NETLOGON_CONTROL_REDISCOVER 5 // Force to re-discover trusted domain DCs
#define NETLOGON_CONTROL_TC_QUERY 6 // Query status of specified trusted channel status
#define NETLOGON_CONTROL_TRANSPORT_NOTIFY 7 // Notify netlogon that a new transport has come online
#define NETLOGON_CONTROL_FIND_USER 8 // Find named user in a trusted domain
#define NETLOGON_CONTROL_CHANGE_PASSWORD 9 // Change machine password on a secure channel to a trusted domain
// Debug function codes
#define NETLOGON_CONTROL_UNLOAD_NETLOGON_DLL 0xFFFB
#define NETLOGON_CONTROL_BACKUP_CHANGE_LOG 0xFFFC
#define NETLOGON_CONTROL_TRUNCATE_LOG 0xFFFD
#define NETLOGON_CONTROL_SET_DBFLAG 0xFFFE
#define NETLOGON_CONTROL_BREAKPOINT 0xFFFF
//
// Query level 1 for I_NetLogonControl
//
typedef struct _NETLOGON_INFO_1 {
DWORD netlog1_flags;
NET_API_STATUS netlog1_pdc_connection_status;
} NETLOGON_INFO_1, *PNETLOGON_INFO_1;
typedef struct _NETLOGON_INFO_2 {
DWORD netlog2_flags;
NET_API_STATUS netlog2_pdc_connection_status;
#ifdef MIDL_PASS
[string] wchar_t * netlog2_trusted_dc_name;
#else
LPWSTR netlog2_trusted_dc_name;
#endif // MIDL_PASS
NET_API_STATUS netlog2_tc_connection_status;
} NETLOGON_INFO_2, *PNETLOGON_INFO_2;
typedef struct _NETLOGON_INFO_3 {
DWORD netlog3_flags;
DWORD netlog3_logon_attempts;
DWORD netlog3_reserved1;
DWORD netlog3_reserved2;
DWORD netlog3_reserved3;
DWORD netlog3_reserved4;
DWORD netlog3_reserved5;
} NETLOGON_INFO_3, *PNETLOGON_INFO_3;
typedef struct _NETLOGON_INFO_4 {
#ifdef MIDL_PASS
[string] wchar_t * netlog4_trusted_dc_name;
[string] wchar_t * netlog4_trusted_domain_name;
#else
LPWSTR netlog4_trusted_dc_name;
LPWSTR netlog4_trusted_domain_name;
#endif // MIDL_PASS
} NETLOGON_INFO_4, *PNETLOGON_INFO_4;
//
// Values of netlog1_flags
//
#define NETLOGON_REPLICATION_NEEDED 0x01 // Database is out of date
#define NETLOGON_REPLICATION_IN_PROGRESS 0x02 // Replication is happening now
#define NETLOGON_FULL_SYNC_REPLICATION 0x04 // full sync replication required/progress
#define NETLOGON_REDO_NEEDED 0x08 // Redo of previous replication needed
#define NETLOGON_HAS_IP 0x10 // The trusted domain DC has an IP address
#define NETLOGON_HAS_TIMESERV 0x20 // The trusted domain DC runs the Windows Time Service
#ifdef __cplusplus
}
#endif
#endif // _LMDOMAIN_
#pragma option pop /*P_O_Pop*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -