Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1995.
//
// File: overlap.hxx
//
// Contents: COverlappedStream header
//
// Classes: COverlappedStream
//
// History: 19-Sep-95 HenryLee Created
//
// Notes: Requires NtIoApi.h
//
//----------------------------------------------------------------------------
#ifndef __OVERLAP_HXX__
#define __OVERLAP_HXX__
#include <storext.h>
//+---------------------------------------------------------------------------
//
// Class: COverlappedStream
//
// Purpose:Implements IOverlappedStream for OFS streams and flat files
// (as opposed to overlapped I/O for IStream for docfiles)
//
// Notes: This is class with a partial implementation
// To use this class, inherit this into another class that
// implements IUnknown and IStream (and expose QueryInterface)
//
//----------------------------------------------------------------------------
class COverlappedStream : public IOverlappedStream { public: inline COverlappedStream (HANDLE h = NULL); inline ~COverlappedStream ();
// IOverlappedStream
STDMETHOD(ReadOverlapped) ( /* [in, size_is(cb)] */ void * pv, /* [in] */ ULONG cb, /* [out] */ ULONG * pcbRead, /* [in,out] */ STGOVERLAPPED *lpOverlapped);
STDMETHOD(WriteOverlapped) ( /* [in, size_is(cb)] */ void *pv, /* [in] */ ULONG cb, /* [out] */ ULONG * pcbWritten, /* [in,out] */ STGOVERLAPPED *lpOverlapped);
STDMETHOD(GetOverlappedResult) ( /* [in, out] */ STGOVERLAPPED *lpOverlapped, /* [out] */ DWORD * plcbTransfer, /* [in] */ BOOL fWait);
protected: NuSafeNtHandle _h;
private:
};
SAFE_INTERFACE_PTR(SafeCOverlappedStream, COverlappedStream); #define StgOverlapped_SIG LONGSIG('O', 'V', 'E', 'R')
#define StgOverlapped_SIGDEL LONGSIG('O', 'v', 'E', 'r')
//+-------------------------------------------------------------------
//
// Member: COverlappedStream::COverlappedStream
//
// Synopsis: Initialize the generic overlapped object.
//
// Arguments: none
//
//--------------------------------------------------------------------
inline COverlappedStream::COverlappedStream(HANDLE h) : _h(h) { }
//+-------------------------------------------------------------------
//
// Member: COverlappedStream::~COverlappedStream
//
// Synopsis: Destroys the generic overlapped object.
//
// Arguments: none
//
//--------------------------------------------------------------------
inline COverlappedStream::~COverlappedStream() { }
#endif // #ifndef __OVERLAP_HXX__
|