windows-nt/Source/XPSP1/NT/public/sdk/inc/getuser.h
2020-09-26 16:20:57 +08:00

143 lines
4.6 KiB
C

/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1992-1999 **/
/**********************************************************************/
/*
GetUser.h
This file contains the definitions for the User Browser "C" API
FILE HISTORY:
AndyHe 11-Oct-1992 Created
*/
#ifndef _GETUSER_H_
#define _GETUSER_H_
#if _MSC_VER > 1000
#pragma once
#endif
#include <ntseapi.h>
typedef HANDLE HUSERBROW; // handle type returned by OpenUserBrowser
//
// Parameter structure passed to OpenUserBrowser
//
typedef struct tagUSLT { // uslt
ULONG ulStructSize;
BOOL fUserCancelled; // Set if user cancelled
BOOL fExpandNames; // TRUE if full names should be returned
HWND hwndOwner; // Window handle to use for dialog
WCHAR * pszTitle; // Dialog title (or NULL)
WCHAR * pszInitialDomain; // NULL for local machine or prefix
// with "\\" for server
DWORD Flags; // Defined below
ULONG ulHelpContext; // Help context for the main dialog
WCHAR * pszHelpFileName; // Help file name
} USERBROWSER, *LPUSERBROWSER, * PUSERBROWSER;
//
// Bit values for Flags field
//
//
// Indicates the user accounts should be shown as if the user pressed
// the "Show Users" button. The button will be hidden if this flag is
// set. The USRBROWS_SHOW_USERS flag must also be set.
#define USRBROWS_EXPAND_USERS (0x00000008)
//
// Passing this will prevent the computer name from showing up in the
// combo box.
//
#define USRBROWS_DONT_SHOW_COMPUTER (0x00000100)
//
// Allow the user to only select a single item from the listbox (not all
// SHOW_* combinations are supported with this option).
//
#define USRBROWS_SINGLE_SELECT (0x00001000)
//
// These manifests determine which well known Sids are included in the list.
//
#define USRBROWS_INCL_REMOTE_USERS (0x00000010)
#define USRBROWS_INCL_INTERACTIVE (0x00000020)
#define USRBROWS_INCL_EVERYONE (0x00000040)
#define USRBROWS_INCL_CREATOR (0x00000080)
#define USRBROWS_INCL_SYSTEM (0x00010000)
#define USRBROWS_INCL_RESTRICTED (0x00020000)
#define USRBROWS_INCL_ALL (USRBROWS_INCL_REMOTE_USERS |\
USRBROWS_INCL_INTERACTIVE |\
USRBROWS_INCL_EVERYONE |\
USRBROWS_INCL_CREATOR |\
USRBROWS_INCL_SYSTEM |\
USRBROWS_INCL_RESTRICTED)
//
// These manifests determine which type of accounts to display
//
// Note: currently, if you display groups, you must display users
// if you display aliases (local groups), you must display
// groups and users
//
#define USRBROWS_SHOW_ALIASES (0x00000001)
#define USRBROWS_SHOW_GROUPS (0x00000002)
#define USRBROWS_SHOW_USERS (0x00000004)
#define USRBROWS_SHOW_ALL (USRBROWS_SHOW_ALIASES |\
USRBROWS_SHOW_GROUPS |\
USRBROWS_SHOW_USERS)
//
// The caller should provide the name of a help file containing four
// help contexts. The first help context is for the main User Browser
// dialog, the next three are for the Local Group Membership, Global Group
// Membership, and Find Account subdialogs, respectively.
//
#define USRBROWS_HELP_OFFSET_LOCALGROUP 1
#define USRBROWS_HELP_OFFSET_GLOBALGROUP 2
#define USRBROWS_HELP_OFFSET_FINDUSER 3
//
// User Details structure returned by user browser enumeration
//
typedef struct tagUSDT { // usdt
enum _SID_NAME_USE UserType;
PSID psidUser;
PSID psidDomain;
WCHAR * pszFullName;
WCHAR * pszAccountName;
WCHAR * pszDisplayName;
WCHAR * pszDomainName;
WCHAR * pszComment;
ULONG ulFlags; // User account flags
} USERDETAILS, * LPUSERDETAILS, * PUSERDETAILS;
#ifdef __cplusplus
extern "C" {
#endif
// Function definitions for the GetUser API...
HUSERBROW WINAPI OpenUserBrowser( LPUSERBROWSER lpUserParms );
BOOL WINAPI EnumUserBrowserSelection( HUSERBROW hHandle,
LPUSERDETAILS lpUser,
DWORD *plBufferSize );
BOOL WINAPI CloseUserBrowser( HUSERBROW hHandle );
#ifdef __cplusplus
} // extern "C"
#endif
#endif //_GETUSER_H_