//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1998 - 1999
//
//  File:       irrecv.idl
//
//--------------------------------------------------------------------------

[
uuid(0c821d64-a3fc-11d1-bb7a-0080c75e4ec1),
version(1.0),
endpoint("ncalrpc:[Infrared Transfer Status]")
]
interface IrNotifications
{
    import "irtypes.idl";

    void PopupUI ([in] handle_t Binding);

    void InitiateFileTransfer ([in] handle_t Binding,
                               [in] unsigned long lSize,
                               [in, size_is(lSize)] wchar_t lpszFilesList[*]);

    void DisplaySettings([in] handle_t Binding);

    void
    UpdateSendProgress(
                        [in]        handle_t        RpcBinding,
                        [in]        COOKIE          Cookie,
                        [in, string] wchar_t        CurrentFile[],
                        [in]        __int64         BytesInTransfer,
                        [in]        __int64         BytesTransferred,
                        [out]       error_status_t * pStatus
                        );

    void
    OneSendFileFailed(
                        [in]         handle_t       RpcBinding,
                        [in]         COOKIE         Cookie,
                        [in, string] wchar_t        FileName[],
                        [in]         error_status_t ErrorCode,
                        [in] enum  FAILURE_LOCATION Location,
                        [out]      error_status_t * pStatus
                        );

    void
    SendComplete(
                        [in]        handle_t        RpcBinding,
                        [in]        COOKIE          Cookie,
                        [in]        __int64         BytesTransferred,
                        [out]       error_status_t * pStatus
                        );

    //
    // The next three functions relate to received files.
    //

    //
    // A new connection has been made to this machine.
    //
    error_status_t
    ReceiveInProgress(
                          [in]        handle_t  RpcBinding,
                          [in, string] wchar_t  MachineName[],
                          [out]       COOKIE *  pCookie,
                          [in]        boolean   fSuppressRecvConf
                          );

    //
    // A new file or directory is being sent; ask for confirmation.
    //
    error_status_t
    GetPermission(
                          [in]         handle_t RpcBinding,
                          [in]         COOKIE   Cookie,
                          [in, string] wchar_t  FileName[],
                          [in]         boolean  fDirectory
                          );

    //
    // The connection is closed.
    //
    error_status_t
    ReceiveFinished(
                          [in]        handle_t         RpcBinding,
                          [in]        COOKIE           Cookie,
                          [in]        unsigned long    Status
                          );

    //
    // Sends a list of all visible devices.
    //
    void
    DeviceInRange(
                          [in]        handle_t RpcBinding,
                          [in]        POBEX_DEVICE_LIST device,
                          [out]       error_status_t * pStatus
                          );

    //
    // No devices are visible.
    //
    void
    NoDeviceInRange(
                          [in]        handle_t RpcBinding,
                          [out]       error_status_t * pStatus
                          );


    error_status_t
    ShutdownUi(
                          [in]        handle_t RpcBinding
                          );


    error_status_t
    ShutdownRequested(
                          [in]        handle_t RpcBinding,
                          [out] boolean * pAnswer
                          );
}
