estimate.cpp

来自「把doc文档转成pdf后刻录成CD,用VC++开发,用了Nero的SDK和CXI」· C++ 代码 · 共 102 行

CPP
102
字号
/******************************************************************************
|* 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-2004 Ahead Software AG. All Rights Reserved.
|*-----------------------------------------------------------------------------
|* NeroSDK / NeroCmd
|*
|* PROGRAM: Estimate.cpp
|*
|* PURPOSE: Estimate ISO track size
******************************************************************************/

#include "stdafx.h"
#include "BurnContext.h"

CExitCode CBurnContext::CommandEstimate (const PARAMETERS & params)
{
	EXITCODE code = EXITCODE_OK;
	NERO_ISO_ITEM * pItem = NULL;
	NERO_FILESYSTEMTRACK_OPTIONS fso;
	CNeroIsoTrack * pIsoTrack = NULL;

	memset (&fso, 0, sizeof (fso));
	fso.netsStructureSize = sizeof (fso);
	fso.netsMediaType = (NERO_MEDIA_TYPE) params.GetMediaType ();
	fso.netsDeviceHandle = m_NeroDeviceHandle;
	fso.netsFlags = GetBurnFlags (params);

	if (params.GetUseDVD())
	{
		fso.netsMediaType = (NERO_MEDIA_TYPE) (fso.netsMediaType | MEDIA_DVD_ANY);
	}

	try
	{
		// Get the ISO track from the information in the parameters.

		code = GetIsoTrack (params, &pIsoTrack, &pItem);
		if (code != EXITCODE_OK)
		{
			throw code;
		}

		// Fill in the CD stamp information as it only became available after
		// GetIsoTrack.

		fso.netspCDStamp = m_pCDStamp;

		DWORD dwEstimateFlags = 0;

		if (!params.GetEstimateNoFSOverhead ())
		{
			dwEstimateFlags |= NETS_FILESYSTEM_OVERHEAD;
		}

		if (!params.GetEstimateNoData ())
		{
			dwEstimateFlags |= NETS_DATA;
		}

		if (!params.GetEstimateNoExactSize ())
		{
			dwEstimateFlags |= NETS_EXACT_SIZE;
		}
		
		unsigned int uEstimatedSize = NeroEstimateTrackSize (pIsoTrack,
															dwEstimateFlags,
															&fso);

		if (uEstimatedSize == -1)
		{
			code = EXITCODE_ERROR_DOING_ESTIMATION;
		}
		else
		{
			code = EXITCODE_OK;

			printf ("Estimated track size: %u blocks\n", uEstimatedSize);
		}
	}
	catch (EXITCODE e)
	{
		code = e;
	}
	
	// Free allocated memory
	
	if (pIsoTrack != NULL)
	{
		NeroFreeIsoTrack (pIsoTrack);
	}

	if (pItem != NULL)
	{
		DeleteIsoItemTree (pItem);
	}
	
	return code;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?