/*****************************************************************************\
* MODULE:       bidispl.idl
*
* PURPOSE:      Implementation of COM interface for BidiSpooler
*
* Copyright (C) 2000 Microsoft Corporation
*
* History:
*
*     03/07/00  Weihai Chen (weihaic) Created
*
\*****************************************************************************/

#include <olectl.h>

import "oaidl.idl";
import "ocidl.idl";

[
    object,
    uuid(8F348BD7-4B47-4755-8A9D-0F422DF3DC89),
    helpstring("BidiSpl Interface"),
    pointer_default(unique)
]


interface IBidiRequest : IUnknown
{
    HRESULT SetSchema  (
                [in] const  LPCWSTR pszSchema) ;
    
    HRESULT SetInputData (
                [in] const  DWORD dwType,
                [in] const  BYTE *pData,
                [in] const  UINT uSize);

    HRESULT GetResult (
                [out]       HRESULT *phr);

    HRESULT GetOutputData  (
                [in] const  DWORD dwIndex,
                [out]       LPWSTR *ppszSchema,
                [out]       DWORD *pdwType,
                [out]       BYTE **ppData,
                [out]       ULONG *uSize);
                
    HRESULT GetEnumCount (
                [out]       DWORD *pdwTotal);
}

[
    object,
    uuid(D752F6C0-94A8-4275-A77D-8F1D1A1121AE),
    helpstring("BidiRequestContainer Interface"),
    pointer_default(unique)
]

interface IBidiRequestContainer : IUnknown
{

    HRESULT AddRequest ( 
                [in]        IBidiRequest *pRequest); 
    
    HRESULT GetEnumObject (
                [out]       IEnumUnknown **ppenum);
                
    HRESULT GetRequestCount (
                [out]       ULONG *puCount);

}

[
    object,
    uuid(D580DC0E-DE39-4649-BAA8-BF0B85A03A97),
    helpstring("BidiSpl Interface"),
    pointer_default(unique)
]

interface IBidiSpl : IUnknown
{
    HRESULT BindDevice (
                [in] const  LPCWSTR pszDeviceName,
                [in] const  DWORD dwAccess);
                
    HRESULT UnbindDevice ();
    
    HRESULT SendRecv (
                [in] const  LPCWSTR pszAction,
                [in]        IBidiRequest *pRequest);
    

    HRESULT MultiSendRecv (
                [in] const  LPCWSTR pszAction,
                [in]        IBidiRequestContainer *pRequestContainer);
    
}



[
    uuid (99147959-6905-46d6-A75F-E0594F012B74),
    version (1.0),
    helpstring ("bidispl 1.0 Type Library")
]

library IBidiSplLib
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");
    [
        uuid (B9162A23-45F9-47cc-80F5-FE0FE9B9E1A2),
        helpstring ("BidiRequest Class")
    ]
    coclass BidiRequest
    {
        [default] interface IBidiRequest;
    };    
    
    [
        uuid (FC5B8A24-DB05-4a01-8388-22EDF6C2BBBA),
        helpstring ("BidiRequestContainer Class")
    ]
    coclass BidiRequestContainer
    {
        [default] interface IBidiRequestContainer;
    };    

    [
        uuid (2A614240-A4C5-4c33-BD87-1BC709331639),
        helpstring ("BidiSpl Class")
    ]
    coclass BidiSpl
    {
        [default] interface IBidiSpl;
    };    

}


