// <copyright file="Program.cpp" company="Microsoft Corporation">
// Copyright (C) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
// </copyright>
// <license>
// The MIT License (MIT)
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// </license>
// Constants
//
// Enumerations
//
/// <summary>
/// The state of an instance.
/// </summary>
;
// Forward interface declarations
//
typedef struct ISetupInstance ISetupInstance;
typedef struct ISetupInstance2 ISetupInstance2;
typedef struct IEnumSetupInstances IEnumSetupInstances;
typedef struct ISetupConfiguration ISetupConfiguration;
typedef struct ISetupConfiguration2 ISetupConfiguration2;
typedef struct ISetupPackageReference ISetupPackageReference;
typedef struct ISetupHelper ISetupHelper;
// Forward class declarations
//
typedef class SetupConfiguration SetupConfiguration;
extern "C" && !
/// <summary>
/// Information about an instance of a product.
/// </summary>
struct
DECLSPEC_NOVTABLE ISetupInstance : public IUnknown ;
EXTERN_C const IID IID_ISetupInstance2;
/// <summary>
/// Information about an instance of a product.
/// </summary>
;
EXTERN_C const IID IID_IEnumSetupInstances;
/// <summary>
/// A enumerator of installed <see cref="ISetupInstance"/> objects.
/// </summary>
;
EXTERN_C const IID IID_ISetupConfiguration;
/// <summary>
/// Gets information about product instances set up on the machine.
/// </summary>
;
EXTERN_C const IID IID_ISetupConfiguration2;
/// <summary>
/// Gets information about product instances.
/// </summary>
;
EXTERN_C const IID IID_ISetupPackageReference;
/// <summary>
/// A reference to a package.
/// </summary>
;
EXTERN_C const IID IID_ISetupHelper;
/// <summary>
/// Helper functions.
/// </summary>
/// <remarks>
/// You can query for this interface from the <see cref="SetupConfiguration"/>
/// class.
/// </remarks>
;
// Class declarations
//
EXTERN_C const CLSID CLSID_SetupConfiguration;
/// <summary>
/// This class implements <see cref="ISetupConfiguration"/>, <see
/// cref="ISetupConfiguration2"/>, and <see cref="ISetupHelper"/>.
/// </summary>
class SetupConfiguration;
// Function declarations
//
/// <summary>
/// Gets an <see cref="ISetupConfiguration"/> that provides information about
/// product instances installed on the machine.
/// </summary>
/// <param name="ppConfiguration">The <see cref="ISetupConfiguration"/> that
/// provides information about product instances installed on the
/// machine.</param>
/// <param name="pReserved">Reserved for future use.</param>
/// <returns>Standard HRESULT indicating success or failure.</returns>
STDMETHODIMP ;
}