156 lines
4.2 KiB
C
156 lines
4.2 KiB
C
|
////////////////////////////////////////////////////////////////////////
|
||
|
// //
|
||
|
// 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
|
||
|
);
|