www.pudn.com > NeroSDK-v1.06.zip > APIRoboControl.h


/****************************************************************************** 
|* 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-2005 Nero AG. All Rights Reserved. 
|*----------------------------------------------------------------------------- 
|* NeroSDK / NeroAPI 
|* 
|* PROGRAM: APIRoboControl.h 
|* 
|* PURPOSE: Robo handling for NeroAPI 
******************************************************************************/ 
#ifndef APIROBOCONTROL_H 
#define APIROBOCONTROL_H 
 
/* This file is responsible for associating Robos with drives etc. 
 * You can associate a Robo with a drive by using NeroAssociateRobo() 
 * with a device handle of a recorder */ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
#include "NeroAPI.h" 
 
typedef enum 
{ 
   NCT_PORT_SERIAL, 
     NCT_PORT_PARALLEL, 
     NCT_PORT_USB 
} 
NERO_COMMNODE_TYPE; 
 
typedef enum 
{ 
   NEROAPI_ROBO_OK=0, 
     NEROAPI_ROBO_NOTFOUND=1, 
	 NEROAPI_ROBO_NOTSUPPORTED=2 
} 
NEROAPI_ROBO_ERROR; 
 
/* Callback for label printing. Will be called by NeroAPI when it 
 * is time to print the label. Must return TRUE if label was printed 
 * sucessfully, FALSE otherwise.  
 * This callback is called from *within* the NeroRobo driver thread 
 * so no GUI interaction is usually allowed (spawning a new process is 
 * ok, though).  
 * This callback mustn't return until the print job is done */ 
typedef BOOL(*NeroPrintLabelCallback_t)(void *data); 
 
typedef struct 
{ 
   char  nrdiIdentifier[256]; 
   DWORD nrdiVersionNumber; 
   char  nrdiDLLName[256]; 
} NERO_ROBO_DRIVER_INFO; 
 
typedef struct 
{ 
   DWORD nrdisNumDevInfos; /* number of following entries */ 
   NERO_ROBO_DRIVER_INFO nrdiDevInfos[1]; 
} NERO_ROBO_DRIVER_INFOS; 
 
 
 
NEROAPI_API NERO_ROBO_DRIVER_INFOS * NADLL_ATTR NeroGetAvailableRoboDrivers(); 
 
/* associate a robo of specified type connected to specified port 
 * with a device handle. 
 * For now, this function will always return NEROAPI_ROBO_OK 
 * as it doesn't actually do anything with the robo. 
 * You can pass NULL instead of a printcallback in which case 
 * printing will be disabled */ 
NEROAPI_API NEROAPI_ROBO_ERROR NADLL_ATTR NeroAssociateRobo(NERO_DEVICEHANDLE aDeviceHandle,	 
						 const char *robo_identifier, 
						 NERO_COMMNODE_TYPE port, 
						 int portnum, 
						 NeroPrintLabelCallback_t printcallback, 
						 void *printcallback_data); 
 
/* The following declarations describe an interface to set runtime options for the robo, 
 * that is settings the robo won't remember over sessions. With this interface, the generic 
 * control flow of the robo can be set. The function below will return NEROAPI_ROBO_NOTSUPPORTED 
 * if a specific control flow option is not supported by the robo or otherwise not available */ 
 
typedef enum 
{ 
	NERO_ROBO_FLAG_CLEANUP,// set this to TRUE in order to have the Robo cleanup itself 
		                   // like removing any remaining CDs from the trays etc. 
						   // Note that the resulting behaviour may sometimes look like a bad  
						   // control flow (the robo will try to remove CDs where there aren't 
						   // any and so on). So you shouldn't use this option unless you're 
						   // cleaning up after a hard server crash or have another good reason 
						   // to do so 
	NERO_ROBO_INSERTCD_RETRIES // This flag specifies how often Nero is to try to insert another 
							   // CD from the input tray if the CD in the drive is unwritable 
							   // The current default value for the number of retries is 5, 
							   // a value of 0 means to try indefinitely 
} NERO_ROBO_FLAG; 
 
NEROAPI_API NEROAPI_ROBO_ERROR NADLL_ATTR NeroSetRoboFlag(NERO_DEVICEHANDLE aDeviceHandle, 
														  NERO_ROBO_FLAG  eRoboFlag, 
														  int iRoboValue); 
 
																	    
 
#ifdef __cplusplus 
} 
#endif 
 
#endif // APIROBOCONTROL_H