/*********************************************************************** * read_xx_header [internal] */ static int read_xx_header( HFILE lzfd ) { IMAGE_DOS_HEADER mzh; char magic[3]; LZSeek( lzfd, 0, SEEK_SET ); if ( sizeof(mzh) != LZRead( lzfd, (LPSTR)&mzh, sizeof(mzh) ) ) return 0; if ( mzh.e_magic != IMAGE_DOS_SIGNATURE ) return 0; LZSeek( lzfd, mzh.e_lfanew, SEEK_SET ); if ( 2 != LZRead( lzfd, magic, 2 ) ) return 0; LZSeek( lzfd, mzh.e_lfanew, SEEK_SET ); if ( magic[0] == 'N' && magic[1] == 'E' ) return IMAGE_OS2_SIGNATURE; if ( magic[0] == 'P' && magic[1] == 'E' ) return IMAGE_NT_SIGNATURE; magic[2] = '\0'; WARN("Can't handle %s files.\n", magic ); return 0; }
BOOL My_LZRead() { INT hFile=NULL; LPSTR lpBuffer=NULL; INT cbRead=NULL; INT returnVal_Real = NULL; INT returnVal_Intercepted = NULL; DWORD error_Real = 0; DWORD error_Intercepted = 0; disableInterception(); returnVal_Real = LZRead (hFile,lpBuffer,cbRead); error_Real = GetLastError(); enableInterception(); returnVal_Intercepted = LZRead (hFile,lpBuffer,cbRead); error_Intercepted = GetLastError(); return ((returnVal_Real == returnVal_Intercepted) && (error_Real == error_Intercepted)); }
/*********************************************************************** * LZRead (LZEXPAND.5) */ INT16 WINAPI LZRead16( HFILE16 fd, LPVOID buf, UINT16 toread ) { if (IS_LZ_HANDLE(fd)) return LZRead( fd, buf, toread ); return _lread( (HFILE)DosFileHandleToWin32Handle(fd), buf, toread ); }