websitepanel/tools/WIX/sdk/inc/deputil.h
2012-09-18 22:21:14 -07:00

157 lines
5.9 KiB
C

#pragma once
//-------------------------------------------------------------------------------------------------
// <copyright file="deputil.h" company="Outercurve Foundation">
// Copyright (c) 2004, Outercurve Foundation.
// This software is released under Microsoft Reciprocal License (MS-RL).
// The license and further copyright text can be found in the file
// LICENSE.TXT at the root directory of the distribution.
// </copyright>
//
// <summary>
// Common function declarations for the dependency/ref-counting feature.
// </summary>
//-------------------------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
#define ReleaseDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); }
#define ReleaseNullDependencyArray(rg, c) if (rg) { DepDependencyArrayFree(rg, c); rg = NULL; }
typedef struct _DEPENDENCY
{
LPWSTR sczKey;
LPWSTR sczName;
} DEPENDENCY;
/***************************************************************************
DepGetProviderInformation - gets the various pieces of data registered
with a dependency.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepGetProviderInformation(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__deref_out_z_opt LPWSTR* psczId,
__deref_out_z_opt LPWSTR* psczName,
__out_opt DWORD64* pqwVersion
);
/***************************************************************************
DepCheckDependency - Checks that the dependency is registered and within
the proper version range.
Note: Returns E_NOTFOUND if the dependency was not found.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes,
__in STRINGDICT_HANDLE sdDependencies,
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies
);
/***************************************************************************
DepCheckDependents - Checks if any dependents are still installed for the
given provider key.
***************************************************************************/
DAPI_(HRESULT) DepCheckDependents(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in int iAttributes,
__in C_STRINGDICT_HANDLE sdIgnoredDependents,
__deref_inout_ecount_opt(*pcDependents) DEPENDENCY** prgDependents,
__inout LPUINT pcDependents
);
/***************************************************************************
DepRegisterDependency - Registers the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey,
__in_z LPCWSTR wzVersion,
__in_z LPCWSTR wzDisplayName,
__in_z_opt LPCWSTR wzId,
__in int iAttributes
);
/***************************************************************************
DepDependentExists - Determines if a dependent is registered.
Note: Returns S_OK if dependent is registered.
Returns E_FILENOTFOUND if dependent is not registered
***************************************************************************/
DAPI_(HRESULT) DepDependentExists(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepRegisterDependent - Registers a dependent under the dependency provider.
***************************************************************************/
DAPI_(HRESULT) DepRegisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey,
__in_z_opt LPCWSTR wzMinVersion,
__in_z_opt LPCWSTR wzMaxVersion,
__in int iAttributes
);
/***************************************************************************
DepUnregisterDependency - Removes the dependency provider.
Note: Caller should call CheckDependents prior to remove a dependency.
Returns E_FILENOTFOUND if the dependency is not registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependency(
__in HKEY hkHive,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DepUnregisterDependent - Removes a dependent under the dependency provider.
Note: Returns E_FILENOTFOUND if neither the dependency or dependent are
registered.
***************************************************************************/
DAPI_(HRESULT) DepUnregisterDependent(
__in HKEY hkHive,
__in_z LPCWSTR wzDependencyProviderKey,
__in_z LPCWSTR wzProviderKey
);
/***************************************************************************
DependencyArrayAlloc - Allocates or expands an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(HRESULT) DepDependencyArrayAlloc(
__deref_inout_ecount_opt(*pcDependencies) DEPENDENCY** prgDependencies,
__inout LPUINT pcDependencies,
__in_z LPCWSTR wzKey,
__in_z_opt LPCWSTR wzName
);
/***************************************************************************
DepDependencyArrayFree - Frees an array of DEPENDENCY structs.
***************************************************************************/
DAPI_(void) DepDependencyArrayFree(
__in_ecount(cDependencies) DEPENDENCY* rgDependencies,
__in UINT cDependencies
);
#ifdef __cplusplus
}
#endif