|
|
////////////////////////////////////////////////////////////////////////
// //
// Context structure is not known to the caller. It is defined by the //
// callee when Open/FindFirst is called and is used subsequently as //
// input to other calls. //
// //
// Since the caller is not aware of the context structure the object //
// manager must provide a free context funtion. //
// //
////////////////////////////////////////////////////////////////////////
#include "global.h"
DWORD MartaAddRefRegistryKeyContext( IN MARTA_CONTEXT Context );
DWORD MartaCloseRegistryKeyContext( IN MARTA_CONTEXT Context );
////////////////////////////////////////////////////////////////////////
// Does not free up the current context. //
////////////////////////////////////////////////////////////////////////
DWORD MartaFindFirstRegistryKey( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pChildContext );
////////////////////////////////////////////////////////////////////////
// Frees up the current context. //
////////////////////////////////////////////////////////////////////////
DWORD MartaFindNextRegistryKey( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pSiblingContext );
////////////////////////////////////////////////////////////////////////
// Does not free up the current context. //
////////////////////////////////////////////////////////////////////////
DWORD MartaGetRegistryKeyParentContext( IN MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pParentContext );
DWORD MartaGetRegistryKeyProperties( IN MARTA_CONTEXT Context, IN OUT PMARTA_OBJECT_PROPERTIES pProperties );
DWORD MartaGetRegistryKeyTypeProperties( IN OUT PMARTA_OBJECT_TYPE_PROPERTIES pProperties );
DWORD MartaGetRegistryKeyRights( IN MARTA_CONTEXT Context, IN SECURITY_INFORMATION SecurityInfo, OUT PSECURITY_DESCRIPTOR * ppSecurityDescriptor );
DWORD MartaOpenRegistryKeyNamedObject( IN LPCWSTR pObjectName, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pContext );
DWORD MartaOpenRegistryKeyHandleObject( IN HANDLE Handle, IN ACCESS_MASK AccessMask, OUT PMARTA_CONTEXT pContext );
DWORD MartaSetRegistryKeyRights( IN MARTA_CONTEXT Context, IN SECURITY_INFORMATION SecurityInfo, IN PSECURITY_DESCRIPTOR pSecurityDescriptor );
// The following two functions are exported for testing
DWORD MartaConvertRegistryKeyContextToName( IN MARTA_CONTEXT Context, OUT LPWSTR *ppwszObject );
// The returned Handle isn't duplicated. It has the same lifetime as
// the Context
DWORD MartaConvertRegistryKeyContextToHandle( IN MARTA_CONTEXT Context, OUT HANDLE *pHandle );
ACCESS_MASK MartaGetRegistryKeyDesiredAccess( IN SECURITY_OPEN_TYPE OpenType, IN BOOL Attribs, IN SECURITY_INFORMATION SecurityInfo );
ACCESS_MASK MartaGetRegistryKey32DesiredAccess( IN SECURITY_OPEN_TYPE OpenType, IN BOOL Attribs, IN SECURITY_INFORMATION SecurityInfo );
ACCESS_MASK MartaGetDefaultDesiredAccess( IN SECURITY_OPEN_TYPE OpenType, IN BOOL Attribs, IN SECURITY_INFORMATION SecurityInfo );
DWORD MartaReopenRegistryKeyContext( IN OUT MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask );
DWORD MartaReopenRegistryKeyOrigContext( IN OUT MARTA_CONTEXT Context, IN ACCESS_MASK AccessMask );
DWORD MartaGetRegistryKeyNameFromContext( IN MARTA_CONTEXT Context, OUT LPWSTR *pObjectName );
DWORD MartaGetRegistryKeyParentName( IN LPWSTR ObjectName, OUT LPWSTR *pParentName );
|