/*++ Copyright (c) 2001 Microsoft Corporation Module Name: azrolesp.h Abstract: Definitions of C interfaces. One day all of these interfaces will be in the public SDK. Only such interfaces exist in this file. Author: Cliff Van Dyke (cliffv) 11-Apr-2001 --*/ #ifndef _AZROLESP_H_ #define _AZROLESP_H_ #include "azroles.h" #if !defined(_AZROLESAPI_) #define WINAZROLES DECLSPEC_IMPORT #else #define WINAZROLES #endif #ifdef __cplusplus extern "C" { #endif ///////////////////////////////////////////////////////////////////////////// // // Value definitions // ///////////////////////////////////////////////////////////////////////////// // // Common Property IDs // // This list of property IDs are common to all objects. // Each object should pick specific property ids after AZ_PROP_FIRST_SPECIFIC // #define AZ_PROP_FIRST_SPECIFIC 100 // // Audit specific constants // #define AZP_APPINIT_AUDITPARAMS_NO 4 #define AZP_CLIENTCREATE_AUDITPARAMS_NO 4 #define AZP_ACCESSCHECK_AUDITPARAMS_NO 9 #define AZP_CLIENTDELETE_AUDITPARAMS_NO 3 // // Maximum length (in characters) of the object name // // #define AZ_MAX_APPLICATION_NAME_LENGTH 512 // #define AZ_MAX_OPERATION_NAME_LENGTH 64 // #define AZ_MAX_TASK_NAME_LENGTH 64 // #define AZ_MAX_SCOPE_NAME_LENGTH 65536 // #define AZ_MAX_GROUP_NAME_LENGTH 64 // #define AZ_MAX_ROLE_NAME_LENGTH 64 // #define AZ_MAX_NAME_LENGTH 65536 // Max of the above // // Maximum length (in characters) of the description of an object // // #define AZ_MAX_DESCRIPTION_LENGTH 1024 // // Maximum length (in characters) of various object strings // // #define AZ_MAX_POLICY_URL_LENGTH 65536 // #define AZ_MAX_GROUP_LDAP_QUERY_LENGTH 4096 ///////////////////////////////////////////////////////////////////////////// // // Structure definitions // ///////////////////////////////////////////////////////////////////////////// // // Handle to various objects returned to caller // typedef PVOID AZ_HANDLE; typedef AZ_HANDLE *PAZ_HANDLE; // // Array of strings returned from various "GetProperty" procedures // typedef struct _AZ_STRING_ARRAY { // // Number of strings // ULONG StringCount; // // An array of StringCount pointers to strings. // LPWSTR *Strings; } AZ_STRING_ARRAY, *PAZ_STRING_ARRAY; // // Array of SIDs returned from various "GetProperty" procedures // typedef struct _AZ_SID_ARRAY { // // Number of SIDs // ULONG SidCount; // // An array of SidCount pointers to SIDs. // PSID *Sids; } AZ_SID_ARRAY, *PAZ_SID_ARRAY; // // Array of GUIDs returned from various "GetProperty" procedures // typedef struct _AZ_GUID_ARRAY { // // Number of GUIDs // ULONG GuidCount; // // An array of GuidCount pointers to GUIDs. // GUID **Guids; } AZ_GUID_ARRAY, *PAZ_GUID_ARRAY; ///////////////////////////////////////////////////////////////////////////// // // Procedure definitions // ///////////////////////////////////////////////////////////////////////////// WINAZROLES DWORD WINAPI AzInitialize( IN LPCWSTR PolicyUrl, IN DWORD Flags, IN DWORD Reserved, OUT PAZ_HANDLE AzStoreHandle ); WINAZROLES DWORD WINAPI AzUpdateCache( IN AZ_HANDLE AzStoreHandle ); WINAZROLES DWORD WINAPI AzGetProperty( IN AZ_HANDLE AzHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzSetProperty( IN AZ_HANDLE AzHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzAddPropertyItem( IN AZ_HANDLE AzHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzRemovePropertyItem( IN AZ_HANDLE AzHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); // // Flags to AuthorizationStore routines // #define AZ_AZSTORE_FLAG_VALID 0x000F // Mask of all valid flags // // AzAuthorizationStore routines // WINAZROLES DWORD WINAPI AzAuthorizationStoreDelete( IN AZ_HANDLE AzStoreHandle, IN DWORD Reserved ); // // Application routines // WINAZROLES DWORD WINAPI AzApplicationCreate( IN AZ_HANDLE AzStoreHandle, IN LPCWSTR ApplicationName, IN DWORD Reserved, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationOpen( IN AZ_HANDLE AzStoreHandle, IN LPCWSTR ApplicationName, IN DWORD Reserved, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationClose( IN AZ_HANDLE AzAuthorizationStoreHandle, IN LPCWSTR pApplicationName, IN LONG lFlags ); WINAZROLES DWORD WINAPI AzApplicationEnum( IN AZ_HANDLE AzStoreHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationDelete( IN AZ_HANDLE AzStoreHandle, IN LPCWSTR ApplicationName, IN DWORD Reserved ); // // Operation routines // WINAZROLES DWORD WINAPI AzOperationCreate( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR OperationName, IN DWORD Reserved, OUT PAZ_HANDLE OperationHandle ); WINAZROLES DWORD WINAPI AzOperationOpen( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR OperationName, IN DWORD Reserved, OUT PAZ_HANDLE OperationHandle ); WINAZROLES DWORD WINAPI AzOperationEnum( IN AZ_HANDLE ApplicationHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE OperationHandle ); WINAZROLES DWORD WINAPI AzOperationDelete( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR OperationName, IN DWORD Reserved ); // // Task routines // WINAZROLES DWORD WINAPI AzTaskCreate( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR TaskName, IN DWORD Reserved, OUT PAZ_HANDLE TaskHandle ); WINAZROLES DWORD WINAPI AzTaskOpen( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR TaskName, IN DWORD Reserved, OUT PAZ_HANDLE TaskHandle ); WINAZROLES DWORD WINAPI AzTaskEnum( IN AZ_HANDLE ApplicationHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE TaskHandle ); WINAZROLES DWORD WINAPI AzTaskDelete( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR TaskName, IN DWORD Reserved ); // // Scope routines // WINAZROLES DWORD WINAPI AzScopeCreate( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR ScopeName, IN DWORD Reserved, OUT PAZ_HANDLE ScopeHandle ); WINAZROLES DWORD WINAPI AzScopeOpen( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR ScopeName, IN DWORD Reserved, OUT PAZ_HANDLE ScopeHandle ); WINAZROLES DWORD WINAPI AzScopeEnum( IN AZ_HANDLE ApplicationHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE ScopeHandle ); WINAZROLES DWORD WINAPI AzScopeDelete( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR ScopeName, IN DWORD Reserved ); // // Group routines // WINAZROLES DWORD WINAPI AzGroupCreate( IN AZ_HANDLE ParentHandle, IN LPCWSTR GroupName, IN DWORD Reserved, OUT PAZ_HANDLE GroupHandle ); WINAZROLES DWORD WINAPI AzGroupOpen( IN AZ_HANDLE ParentHandle, IN LPCWSTR GroupName, IN DWORD Reserved, OUT PAZ_HANDLE GroupHandle ); WINAZROLES DWORD WINAPI AzGroupEnum( IN AZ_HANDLE ParentHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE GroupHandle ); WINAZROLES DWORD WINAPI AzGroupDelete( IN AZ_HANDLE ParentHandle, IN LPCWSTR GroupName, IN DWORD Reserved ); // // Role routines // WINAZROLES DWORD WINAPI AzRoleCreate( IN AZ_HANDLE ParentHandle, IN LPCWSTR RoleName, IN DWORD Reserved, OUT PAZ_HANDLE RoleHandle ); WINAZROLES DWORD WINAPI AzRoleOpen( IN AZ_HANDLE ParentHandle, IN LPCWSTR RoleName, IN DWORD Reserved, OUT PAZ_HANDLE RoleHandle ); WINAZROLES DWORD WINAPI AzRoleEnum( IN AZ_HANDLE ParentHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE RoleHandle ); WINAZROLES DWORD WINAPI AzRoleDelete( IN AZ_HANDLE ParentHandle, IN LPCWSTR RoleName, IN DWORD Reserved ); // // Routines common to all objects // WINAZROLES DWORD WINAPI AzCloseHandle( IN AZ_HANDLE AzHandle, IN DWORD Reserved ); WINAZROLES DWORD WINAPI AzSubmit( IN AZ_HANDLE AzHandle, IN DWORD Flags, IN DWORD Reserved ); WINAZROLES VOID WINAPI AzFreeMemory( IN OUT PVOID Buffer ); // // Client context routines // WINAZROLES DWORD WINAPI AzInitializeContextFromToken( IN AZ_HANDLE ApplicationHandle, IN HANDLE TokenHandle OPTIONAL, IN DWORD Reserved, OUT PAZ_HANDLE ClientContextHandle ); WINAZROLES DWORD WINAPI AzInitializeContextFromName( IN AZ_HANDLE ApplicationHandle, IN LPWSTR DomainName OPTIONAL, IN LPWSTR ClientName, IN DWORD Reserved, OUT PAZ_HANDLE ClientContextHandle ); WINAZROLES DWORD WINAPI AzInitializeContextFromStringSid( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR SidString, IN DWORD lOptions, OUT PAZ_HANDLE ClientContextHandle ); WINAZROLES DWORD WINAPI AzContextAccessCheck( IN AZ_HANDLE ApplicationObjectHandle, IN DWORD ApplicationSequenceNumber, IN AZ_HANDLE ClientContextHandle, IN LPCWSTR ObjectName, IN ULONG ScopeCount, IN LPCWSTR * ScopeNames, IN ULONG OperationCount, IN PLONG Operations, OUT ULONG *Results, OUT LPWSTR *BusinessRuleString OPTIONAL, IN VARIANT *ParameterNames OPTIONAL, IN VARIANT *ParameterValues OPTIONAL, IN VARIANT *InterfaceNames OPTIONAL, IN VARIANT *InterfaceFlags OPTIONAL, IN VARIANT *Interfaces OPTIONAL ); WINAZROLES DWORD WINAPI AzContextGetRoles( IN AZ_HANDLE ClientContextHandle, IN LPCWSTR ScopeName OPTIONAL, OUT LPWSTR **RoleNames, OUT DWORD *Count ); #ifdef __cplusplus } #endif #endif // _AZROLESP_H_