/**---------------------------------------------------------------------------- \brief \param \return \code \endcode -----------------------------------------------------------------------------*/ DTSTATUS FileIoHelper::FIOWriteToFile( IN LARGE_INTEGER Offset, IN DWORD Size, IN PUCHAR Buffer ) { _ASSERTE(NULL != Buffer); _ASSERTE(0 != Size); _ASSERTE(NULL != Buffer); if (NULL == Buffer || 0 == Size || NULL == Buffer) return DTS_INVALID_PARAMETER; UCHAR* p = NULL; DTSTATUS status = FIOReference(FALSE, Offset, Size, p); if (TRUE != DT_SUCCEEDED(status)) { return status; } __try { RtlCopyMemory(p, Buffer, Size); } __except (EXCEPTION_EXECUTE_HANDLER) { status = DTS_EXCEPTION_RAISED; } FIOUnreference(); return status; }
/**---------------------------------------------------------------------------- \brief \param \return \code \endcode -----------------------------------------------------------------------------*/ DTSTATUS FileIoHelper::FIOReadFromFile( IN LARGE_INTEGER Offset, IN DWORD Size, IN OUT PUCHAR Buffer ) { _ASSERTE(NULL != Buffer); if (NULL == Buffer) return DTS_INVALID_PARAMETER; UCHAR* p = NULL; DTSTATUS status = FIOReference(TRUE, Offset, Size, p); if (TRUE != DT_SUCCEEDED(status)) { printf("FIOReference() failed. status=0x%08x", status); return status; } __try { RtlCopyMemory(Buffer, p, Size); } __except (EXCEPTION_EXECUTE_HANDLER) { printf("exception. code=0x%08x", GetExceptionCode()); status = DTS_EXCEPTION_RAISED; } FIOUnreference(); return status; }