/*************************************************************************
            Copyright Microsoft Corp. 1992 - 1996
                Remote Machine strout sample

    FILE    :   strout.idl

    PURPOSE :   This file defines the interface for the strout example
  
*************************************************************************/
[
uuid(cab31280-b996-11cf-9548-00aa00374e69), // UUID
pointer_default(unique),                    // Pointer default
version(1.0)                                // Program version
]
interface strout_sample
{

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/* Define a type for the second dimension variables that should be      */
/* returned from the server. This should also work for UNICODE          */
/* characters                                                           */
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#if defined _UNICODE
    typedef [string, unique] wchar_t * str; // String of wide chars     
#else
    typedef [string, unique] char * str;    // String of ASCII chars    
#endif

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /* Declaration of the remote procedure.                             */
    /* This procedure will get the environment strings from the server  */
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    void GetRemoteEnv(                  
        // Number of lines in the envirionment block    
        [in, out] unsigned long   * Lines, 
        // Pointer to an array of pointers to the lines in the env. block. 
        // MUST have comma before *Lines in size_of  to set the size of 
        // the right dimension, which is the size of the array of pointers
        [out, size_is(,*Lines)] str **EnvBlock);
    
    // Procedure to shut down the server 
    void ShutDown(void);
}
