// -------------------------------------------------------------------------------- // Oertpriv.h // Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved // Steven J. Bailey // -------------------------------------------------------------------------------- #ifndef __OERTPRIV_H #define __OERTPRIV_H // -------------------------------------------------------------------------------- // Stream Utilitys // -------------------------------------------------------------------------------- HRESULT HrCopyStream2(LPSTREAM lpstmIn, LPSTREAM lpstmOut1, LPSTREAM lpstmOut2, ULONG *pcb); HRESULT HrCopyStreamToFile(LPSTREAM lpstm, HANDLE hFile, ULONG *pcb); BOOL CreateHGlobalFromStream(LPSTREAM pstm, HGLOBAL *phg); BOOL FDoesStreamContain8bit(LPSTREAM lpstm); // -------------------------------------------------------------------------------- // FILESTREAMINFO // -------------------------------------------------------------------------------- typedef struct tagFILESTREAMINFO { WCHAR szFilePath[MAX_PATH]; DWORD dwDesiredAccess; DWORD dwShareMode; SECURITY_ATTRIBUTES rSecurityAttributes; DWORD dwCreationDistribution; DWORD dwFlagsAndAttributes; HANDLE hTemplateFile; } FILESTREAMINFO, *LPFILESTREAMINFO; // -------------------------------------------------------------------------------- // CFileStream // -------------------------------------------------------------------------------- class CFileStream : public IStream { public: // ---------------------------------------------------------------------------- // Construction // ---------------------------------------------------------------------------- CFileStream(void); ~CFileStream(void); // ---------------------------------------------------------------------------- // IUnknown Members // ---------------------------------------------------------------------------- STDMETHODIMP_(ULONG) AddRef(VOID); STDMETHODIMP_(ULONG) Release(VOID); STDMETHODIMP QueryInterface(REFIID, LPVOID*); // ---------------------------------------------------------------------------- // IStream Members // ---------------------------------------------------------------------------- STDMETHODIMP Read(void HUGEP_16 *, ULONG, ULONG*); STDMETHODIMP Write(const void HUGEP_16 *, ULONG, ULONG*); STDMETHODIMP Seek(LARGE_INTEGER, DWORD, ULARGE_INTEGER*); STDMETHODIMP SetSize(ULARGE_INTEGER); STDMETHODIMP CopyTo(LPSTREAM, ULARGE_INTEGER, ULARGE_INTEGER*, ULARGE_INTEGER*); STDMETHODIMP Commit(DWORD); STDMETHODIMP Revert(); STDMETHODIMP LockRegion(ULARGE_INTEGER, ULARGE_INTEGER,DWORD); STDMETHODIMP UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD); STDMETHODIMP Stat(STATSTG*, DWORD); STDMETHODIMP Clone(LPSTREAM*); // ---------------------------------------------------------------------------- // CFileStream Members // ---------------------------------------------------------------------------- HRESULT Open(LPFILESTREAMINFO pFileStreamInfo); void Close(void); private: // ---------------------------------------------------------------------------- // Private Data // ---------------------------------------------------------------------------- ULONG m_cRef; HANDLE m_hFile; FILESTREAMINFO m_rInfo; }; // -------------------------------------------------------------------------------- // String Utilitys // -------------------------------------------------------------------------------- VOID StripUndesirables(LPTSTR psz); LPSTR PszDupLenA(LPCSTR pcszSource, ULONG nLen); BOOL FValidFileChar(CHAR c); LPWSTR PszFromANSIStreamW(UINT cp, LPSTREAM pstm); TCHAR ToUpper(TCHAR c); int IsXDigit(LPSTR psz); int IsUpper(LPSTR psz); int IsAlpha(LPSTR psz); int IsPunct(LPSTR psz); LPSTR strsave(char *); void strappend(char **, char *); BOOL FIsValidRegKeyNameA(LPSTR pwszKey); BOOL FIsValidRegKeyNameW(LPWSTR pwszKey); void ThreadAllocateTlsMsgBuffer(void); void ThreadFreeTlsMsgBuffer(void); #ifdef UNICODE #define FIsValidRegKeyName FIsValidRegKeyNameW #else #define FIsValidRegKeyName FIsValidRegKeyNameA #endif #endif // __OERTPRIV_H