Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

56 lines
1.3 KiB

#ifndef _CSTREAM_INCLUDED
#define _CSTREAM_INCLUDED
static const UINT INPUT_BUF_SIZE = (64 * 1024);
static const UINT HFILE_NOTREAD = ((UINT) -2);
static const UINT DUAL_INPUT_BUF_SIZE = (8 * 1024);
#define chEOF ((unsigned char) 255)
class CStream
{
public:
CStream(PCSTR pszFileName);
~CStream(void);
int STDCALL seek(int pos, SEEK_TYPE seek = SK_SET);
int Remaining() { return pEndBuf - pCurBuf; };
#ifndef _DEBUG
char cget() {
if (pCurBuf < pEndBuf)
return (char) *pCurBuf++;
else if (pEndBuf < pbuf + cbBuf)
return chEOF;
else
return ReadBuf();
}
#else
char cget();
#endif
int tell(void) { return lFileBuf + (pCurBuf - pbuf); };
BOOL STDCALL read(PBYTE pbDst, int cbBytes);
char ReadBuf(void);
friend DWORD WINAPI ReadAhead(LPVOID pv);
void Cleanup(void);
BOOL fInitialized;
PBYTE pCurBuf; // current position in the buffer
PBYTE pEndBuf; // last position in buffer
protected:
void WaitForReadAhead(void);
int lFilePos; // position in the file
int lFileBuf; // file position at first of buffer
HFILE hfile; // file handle
PBYTE pbuf; // address of allocated buffer
PSTR pszFile; // copy of the filename
int cbBuf; // buffer size
int cThrdRead; // result from read-ahead thread
HANDLE hthrd;
DWORD idThrd;
BOOL fDualCPU;
};
#endif // _CSTREAM_INCLUDED