📄 filehelper.cpp
字号:
/******************************************************************************
|* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|* PARTICULAR PURPOSE.
|*
|* Copyright 1995-2003 Ahead Software AG. All Rights Reserved.
|*-----------------------------------------------------------------------------
|* PROJECT: Nero Plugin Manager Example
|*
|* FILE: FileHelper.cpp
|*
|* PURPOSE: Implementation of helper functions for file access
******************************************************************************/
#include "stdafx.h"
#include "FileHelper.h"
#ifdef _DEBUG
# define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// Returns the current position in the file.
DWORD GetFilePointer(HANDLE hFile)
{
ASSERT(hFile != INVALID_HANDLE_VALUE);
return SetFilePointer(hFile, 0, 0, FILE_CURRENT);
}
// Reads a DWORD from a file, if it's not possible throws an exception. This
// allows to scan the file with multiple read without checking after every read.
void ReadDWORD(void* pObject, HANDLE hFile)
{
if(!(pObject && hFile))
{
ASSERT(FALSE);
throw FALSE;
}
DWORD dwRead = 0;
if (!(ReadFile(hFile, pObject, sizeof(DWORD), &dwRead, NULL) &&
dwRead == sizeof(DWORD)))
{
throw FALSE;
}
}
// Reads a WORD from a file, if it's not possible throws an exception. This
// allows to scan the file with multiple read without checking after every read.
void ReadWORD(void* pObject, HANDLE hFile)
{
if(!(pObject && hFile))
{
ASSERT(FALSE);
throw FALSE;
}
DWORD dwRead = 0;
if (!(ReadFile(hFile, pObject, sizeof(WORD), &dwRead, NULL) &&
dwRead == sizeof(WORD)))
{
throw FALSE;
}
}
// Reads a DWORD from the file and aligns it to a 2-byte border since the chunk
// length must be aligned to word size.
DWORD ReadChunkLen(HANDLE hFile)
{
ASSERT(hFile);
DWORD dwLen = 0;
ReadDWORD(&dwLen, hFile);
if (dwLen % 2)
{
dwLen++;
}
return dwLen;
}
// Writes a byte in the file.
void WriteZeroByte(HANDLE hFile)
{
if(hFile)
{
BYTE bt = 0;
DWORD dwWritten = 0;
WriteFile(hFile, &bt, 1, &dwWritten, NULL);
}
else
{
ASSERT(FALSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -