RPCSVC.ACF
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
// PARTICULAR PURPOSE. 
// 
// Copyright (C) 1995  Microsoft Corporation.  All Rights Reserved. 
// 
//  MODULE:   rpcsvc.acf 
// 
//  PURPOSE:  .ACF file for rpcsvc .idl.  This controls the 
//            aspects of the interface which do not affect 
//            the wire. (error handling, memory allocation, etc) 
// 
// 
 
#ifdef SERVER 
 
// 
// On the server side of your application using the fast RpcSmAllocate 
// is recommended in server's which do many allocations. 
// Although it may be used on the client, this requires more work 
// and has little performance impact. 
// 
#define ENABLE_ALLOC ,enable_allocate 
#else 
#define ENABLE_ALLOC /* client */ 
#endif 
 
interface RpcServiceSample 
{ 
 
    // The [comm_status] and [fault_status] attributes cause the stubs 
    // to return any errors in an error_status_t parameter or return 
    // value.  Otherwise, any communication errors will get raised as 
    // an exception.  This has no performance affect, but it keeps the 
    // client code cleaner. 
     
    [comm_status, fault_status] Ping(); 
 
    [comm_status, fault_status] BufferIn1(); 
    [comm_status, fault_status] BufferIn2(); 
    [comm_status, fault_status] BufferIn3(); 
 
    [comm_status, fault_status] BufferOut1(); 
    [comm_status, fault_status] BufferOut2(); 
    [comm_status, fault_status] BufferOut3(); 
    [comm_status, fault_status] BufferOut4(); 
 
    [comm_status, fault_status] StructsIn1(); 
    [comm_status, fault_status] StructsIn2(); 
    [comm_status, fault_status] StructsIn3(); 
 
    [comm_status, fault_status] ListIn(); 
    [comm_status, fault_status] ListOut1(); 
    [comm_status, fault_status ENABLE_ALLOC] ListOut2(); 
 
    [comm_status, fault_status] UnionCall1(); 
    [comm_status, fault_status] UnionCall2(); 
 
    [comm_status, fault_status] CheckSecurity(); 
}