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