summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/storext.idl
blob: 6207d850c15c9b03967febe242e963038ab89180 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1995 - 1995.
//
//  File: OleStor.idl  Cairo only interfaces for OLE Storage
//
//  Contents: IOverlappedStream interface definition
//
//  History:    14-Sep-1995 HenryLee    initial version
//
//--------------------------------------------------------------------------

#ifndef DO_NO_IMPORTS
import "wtypes.idl";
import "unknwn.idl";
import "objidl.idl";
#endif

typedef [wire_marshal(ULONG)] void * HEVENT; 
interface IOverlappedCompletion;

typedef struct _STGOVERLAPPED {
    DWORD   Internal;
    DWORD   InternalHigh;
    DWORD   Offset;
    DWORD   OffsetHigh;
    HEVENT  hEvent;
    IOverlappedCompletion * lpCompletion;
    DWORD   reserved;
} STGOVERLAPPED, *LPSTGOVERLAPPED;

//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1995 - 1995.
//
//  Contents: IOverlappedCompletion interface definition
//
//  History:    14-Sep-1995 HenryLee    initial version
//
//--------------------------------------------------------------------------
[
    object,
    uuid(521a28f0-e40b-11ce-b2c9-00aa00680937),
    pointer_default(unique)
]
interface IOverlappedCompletion : IUnknown
{
    HRESULT OnComplete (
        [in] HRESULT hr,
        [in] DWORD pcbTransferred,
        [in] STGOVERLAPPED *lpOverlapped);
}

//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1995 - 1995.
//
//  Contents: IOverlappedStream interface definition
//
//  History:    14-Sep-1995 HenryLee    initial version
//
//--------------------------------------------------------------------------
[
    object,
    uuid(49384070-e40a-11ce-b2c9-00aa00680937),
    pointer_default(unique)
]
interface IOverlappedStream : IStream
{

    [local]
    HRESULT ReadOverlapped (
                [in, size_is(cb)] void * pv,
                [in] ULONG cb,
                [out] ULONG * pcbRead,
                [in] STGOVERLAPPED *lpOverlapped);

    [call_as(ReadOverlapped)]
    HRESULT RemoteReadOverlapped (
                [in, size_is(cb)] byte * pv,
                [in] ULONG cb,
                [out] ULONG * pcbRead,
                [in] STGOVERLAPPED *lpOverlapped);


    [local]
    HRESULT __stdcall WriteOverlapped (
                [in, size_is(cb)] void *pv,
                [in] ULONG cb,
                [out] ULONG * pcbWritten,
                [in] STGOVERLAPPED *lpOverlapped);

    [call_as(WriteOverlapped)]
    HRESULT __stdcall RemoteWriteOverlapped (
                [in, size_is(cb)] byte *pv,
                [in] ULONG cb,
                [out] ULONG * pcbWritten,
                [in] STGOVERLAPPED *lpOverlapped);

    HRESULT GetOverlappedResult (
                [in, out] STGOVERLAPPED *lpOverlapped,
                [out] DWORD * plcbTransfer,
                [in] BOOL fWait);

}