/*++ 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_ #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_NAME 1 #define AZ_PROP_DESCRIPTION 2 #define AZ_PROP_FIRST_SPECIFIC 100 // // Object specific property IDs // #define AZ_PROP_OPERATION_ID 200 #define AZ_PROP_TASK_OPERATIONS 300 #define AZ_PROP_TASK_BIZRULE 301 #define AZ_PROP_TASK_BIZRULE_LANGUAGE 302 #define AZ_PROP_GROUP_TYPE 400 #define AZ_GROUPTYPE_LDAP_QUERY 1 #define AZ_GROUPTYPE_MEMBERSHIP 2 #define AZ_PROP_GROUP_APP_MEMBERS 401 #define AZ_PROP_GROUP_APP_NON_MEMBERS 402 #define AZ_PROP_GROUP_LDAP_QUERY 403 #define AZ_PROP_GROUP_MEMBERS 404 #define AZ_PROP_GROUP_NON_MEMBERS 405 #define AZ_PROP_ROLE_APP_MEMBERS 500 #define AZ_PROP_ROLE_MEMBERS 501 #define AZ_PROP_ROLE_OPERATIONS 502 #define AZ_PROP_ROLE_SCOPES 503 #define AZ_PROP_JUNCTION_POINT_APPLICATION 600 // // 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_JUNCTION_POINT_NAME_LENGTH 65536 #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 256 // // Maximum length (in characters) of various object strings // #define AZ_MAX_POLICY_URL_LENGTH 65536 #define AZ_MAX_TASK_BIZRULE_LENGTH 65536 #define AZ_MAX_TASK_BIZRULE_LANGUAGE_LENGTH 64 #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; ///////////////////////////////////////////////////////////////////////////// // // Procedure definitions // ///////////////////////////////////////////////////////////////////////////// WINAZROLES DWORD WINAPI AzInitialize( IN DWORD StoreType, IN LPCWSTR PolicyUrl, IN DWORD Flags, IN DWORD Reserved, OUT PAZ_HANDLE AdminManagerHandle ); // // Flags to Admin Manager routines // #define AZ_ADMIN_FLAG_CREATE 0x0001 // Create the policy instead of opening it #define AZ_ADMIN_FLAG_VALID 0x0001 // Mask of all valid flags // // Valid Store types // #define AZ_ADMIN_STORE_UNKNOWN 0x00 // Use the Policy URL to determine store type #define AZ_ADMIN_STORE_AD 0x01 // Active Directory #define AZ_ADMIN_STORE_XML 0x02 // XML file #define AZ_ADMIN_STORE_SAMPLE 0x03 // Temporary sample provider // // Application routines // WINAZROLES DWORD WINAPI AzApplicationCreate( IN AZ_HANDLE AdminManagerHandle, IN LPCWSTR ApplicationName, IN DWORD Reserved, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationOpen( IN AZ_HANDLE AdminManagerHandle, IN LPCWSTR ApplicationName, IN DWORD Reserved, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationEnum( IN AZ_HANDLE AdminManagerHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE ApplicationHandle ); WINAZROLES DWORD WINAPI AzApplicationGetProperty( IN AZ_HANDLE ApplicationHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzApplicationSetProperty( IN AZ_HANDLE ApplicationHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzApplicationDelete( IN AZ_HANDLE AdminManagerHandle, 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 AzOperationGetProperty( IN AZ_HANDLE OperationHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzOperationSetProperty( IN AZ_HANDLE OperationHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); 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 AzTaskGetProperty( IN AZ_HANDLE TaskHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzTaskSetProperty( IN AZ_HANDLE TaskHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzTaskAddPropertyItem( IN AZ_HANDLE TaskHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzTaskRemovePropertyItem( IN AZ_HANDLE TaskHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); 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 AzScopeGetProperty( IN AZ_HANDLE ScopeHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzScopeSetProperty( IN AZ_HANDLE ScopeHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzScopeDelete( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR ScopeName, IN DWORD Reserved ); // // JunctionPoint routines // WINAZROLES DWORD WINAPI AzJunctionPointCreate( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR JunctionPointName, IN DWORD Reserved, OUT PAZ_HANDLE JunctionPointHandle ); WINAZROLES DWORD WINAPI AzJunctionPointOpen( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR JunctionPointName, IN DWORD Reserved, OUT PAZ_HANDLE JunctionPointHandle ); WINAZROLES DWORD WINAPI AzJunctionPointEnum( IN AZ_HANDLE ApplicationHandle, IN DWORD Reserved, IN OUT PULONG EnumerationContext, OUT PAZ_HANDLE JunctionPointHandle ); WINAZROLES DWORD WINAPI AzJunctionPointGetProperty( IN AZ_HANDLE JunctionPointHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzJunctionPointSetProperty( IN AZ_HANDLE JunctionPointHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzJunctionPointDelete( IN AZ_HANDLE ApplicationHandle, IN LPCWSTR JunctionPointName, 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 AzGroupGetProperty( IN AZ_HANDLE GroupHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzGroupSetProperty( IN AZ_HANDLE GroupHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzGroupAddPropertyItem( IN AZ_HANDLE GroupHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzGroupRemovePropertyItem( IN AZ_HANDLE GroupHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); 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 AzRoleGetProperty( IN AZ_HANDLE RoleHandle, IN ULONG PropertyId, IN DWORD Reserved, OUT PVOID *PropertyValue ); WINAZROLES DWORD WINAPI AzRoleSetProperty( IN AZ_HANDLE RoleHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzRoleAddPropertyItem( IN AZ_HANDLE RoleHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); WINAZROLES DWORD WINAPI AzRoleRemovePropertyItem( IN AZ_HANDLE RoleHandle, IN ULONG PropertyId, IN DWORD Reserved, IN PVOID PropertyValue ); 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 Reserved ); WINAZROLES VOID WINAPI AzFreeMemory( IN PVOID Buffer ); // // Private routine // WINAZROLES VOID WINAPI AzpUnload( VOID ); #ifdef __cplusplus } #endif #endif // _AZROLESP_H_