📄 secrun.cxx
字号:
/*++
Copyright (c) 1991-1999 Microsoft Corporation
Module Name:
secrun.cxx
--*/
#include <pch.cxx>
#define _NTAPI_ULIB_
#define _IFSUTIL_MEMBER_
#include "ulib.hxx"
#include "ifsutil.hxx"
#include "error.hxx"
#include "secrun.hxx"
DEFINE_EXPORTED_CONSTRUCTOR( SECRUN, OBJECT, IFSUTIL_EXPORT );
VOID
SECRUN::Construct (
)
/*++
Routine Description:
Constructor for class SECRUN. This function initializes the
member variables to "dummy" states. The member function 'Init'
must be called to make this class "work".
Arguments:
None.
Return Value:
None.
--*/
{
_buf = NULL;
_drive = NULL;
_start_sector = 0;
_num_sectors = 0;
}
VOID
SECRUN::Destroy(
)
/*++
Routine Description:
This routine puts the object back into its initial and empty state.
It is not necessary to call this function between calls to 'Init'
as Init will call this function automatically.
Arguments:
None.
Return Value:
None.
--*/
{
_buf = NULL;
_drive = NULL;
_start_sector = 0;
_num_sectors = 0;
}
IFSUTIL_EXPORT
SECRUN::~SECRUN(
)
/*++
Routine Description:
Destructor of sector run object. Returns references.
Arguments:
None.
Return Value:
None.
--*/
{
Destroy();
}
IFSUTIL_EXPORT
BOOLEAN
SECRUN::Initialize(
IN OUT PMEM Mem,
IN OUT PIO_DP_DRIVE Drive,
IN BIG_INT StartSector,
IN SECTORCOUNT NumSectors
)
/*++
Routine Description:
This member function initializes the class so that reads and writes
may take place.
Arguments:
Mem - Supplies means by which to acquire sufficient memory.
Drive - Supplies drive interface.
StartSector - Supplies starting LBN.
NumSector - Supplies the number of LBNs.
Return Value:
TRUE - Success.
FALSE - Failure.
--*/
{
ULONG size;
Destroy();
DebugAssert(Drive);
DebugAssert(Mem);
_drive = Drive;
_start_sector = StartSector;
_num_sectors = NumSectors;
size = _num_sectors*_drive->QuerySectorSize();
_buf = Mem->Acquire(size, _drive->QueryAlignmentMask());
if (!size || !_buf) {
return FALSE;
}
return TRUE;
}
IFSUTIL_EXPORT
BOOLEAN
SECRUN::Read(
)
/*++
Routine Description:
This member function reads the sectors on disk into memory.
Arguments:
None.
Return Value:
TRUE - Success.
FALSE - Failure.
--*/
{
DebugAssert(_buf);
return _drive->Read(_start_sector, _num_sectors, _buf);
}
IFSUTIL_EXPORT
BOOLEAN
SECRUN::Write(
)
/*++
Routine Description:
This member function writes onto the disk.
Arguments:
None.
Return Value:
TRUE - Success.
FALSE - Failure.
--*/
{
DebugAssert(_buf);
return _drive->Write(_start_sector, _num_sectors, _buf);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -