//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1998 - 1999
//
//  File:       timeif.idl
//
//  Contents:    IDL file for w32time
//
//
//  History:     11-Oct-96   ArnoldM Created
//
//------------------------------------------------------------------------

import "imports.idl"; // import all the include files

[
    uuid(8fb6d884-2388-11d0-8c35-00c04fda2795),
    version(4.1),
    pointer_default(unique)
]

interface W32Time
{
    //--------------------------------------------------------------------------------
    //
    // General provider structures
    //
    //--------------------------------------------------------------------------------
    typedef [switch_type(unsigned __int32)] union _W32TIME_PROVIDER_DATA { 
        [case (0) /*NTP*/]       W32TIME_NTP_PROVIDER_DATA       *pNtpProviderData;
        [case (1) /*HARDWARE*/]  W32TIME_HARDWARE_PROVIDER_DATA  *pHardwareProviderData;  
    } W32TIME_PROVIDER_DATA, *PW32TIME_PROVIDER_DATA; 


    // 
    // W32TIME_PROVIDER_INFO
    // 
    //     ulProviderType           --  one of the following values:
    //         W32TIME_PROVIDER_TYPE_NTP       -- if the provider is an NTP provider
    //         W32TIME_PROVIDER_TYPE_HARDWARE  -- if the provider is a hardware provider
    // 
    //     pProviderData            --  contains data specific to the type of the provider
    //          
    typedef struct _W32TIME_PROVIDER_INFO { 
        unsigned __int32              ulProviderType; 
        [switch_is(ulProviderType)]
        W32TIME_PROVIDER_DATA         ProviderData; 
    } W32TIME_PROVIDER_INFO, *PW32TIME_PROVIDER_INFO; 


    //--------------------------------------------------------------------------------
    //
    // Methods
    //
    //--------------------------------------------------------------------------------

    unsigned long W32TimeSync([in] handle_t hBinding,
                              [in] unsigned long uWait,
                              [in] unsigned long ulFlags);
    
    unsigned long W32TimeGetNetlogonServiceBits([in] handle_t hBinding);

    unsigned long W32TimeQueryProviderStatus([in]          handle_t                 hRPCBinding, 
                                             [in]          unsigned __int32         ulFlags, 
                                             [in, string]  wchar_t                 *pwszProvider, 
                                             [out, ref]    PW32TIME_PROVIDER_INFO  *pProviderInfo); 
}

cpp_quote("#define W32TIME_PROVIDER_TYPE_NTP       0x0000")
cpp_quote("#define W32TIME_PROVIDER_TYPE_HARDWARE  0x0001")
