Application programs call the Backup API to invoke the OpenVMS Backup utility via a call to the BACKUP$START routine. There is only one parameter, the address of an argument buffer that contains a number of option structures that together define the operation requested of the Backup utility. Most of these option structures are equivalent, singly or in combination, to the qualifiers available when invoking the BACKUP utility with the DCL command BACKUP; the call to the API is analogous to a user entering an interactive command to the Backup utility. The call to BACKUP$START is synchronous; that is, it does not return until the operation is complete or is terminated by a fatal error. In the case of a fatal error, the call is aborted. BACKUP Event Callbacks An application can request that the BACKUP API notify the application whenever specific events occur. The application can specify different callback routines to handle different types of BACKUP events, or one routine to handle all events. To do so, the application registers the callback routine by including option structure BCK_OPTYP_K_EVENT_CALLBACK in the call to BACKUP$START. This option structure specifies an event type (or all events) and the address of a routine to be called when the event occurs. The application must include one such option structure for each requested event type. To specify all events, use BCK_EVENT_K_ALL. Event Callback Buffer Formats lists the specific event types and identifiers. A callback routine: o Is called with one argument; a pointer to a bckEvent data structure that contains information to enable the application to process the event o Returns an unsigned integer status value (of any valid OpenVMS message) in R0 to enable the API to perform proper logging of the event NOTE The API does not currently process the return status of the callback routine. However, VSI strongly recommends that the callback routine provide the appropriate status in R0 when returning control to the API. The bckEvent structure contains information about the type of event, and also contains a descriptor of a data structure that contains information to be used to process the event. The bckEvent structure may point to a bckControl structure that specifies control aspects of an event that may require user or operator action. bckEvent Format describes the format of the bckEvent data structure. bckControl Format describes the format of the bckControl data structure. Table 1-1 bckEvent Format Data Type Element Name Description struct bckevt_r_event_ Pointer to event data dsc$descriptor buffer unsigned int bckevt_l_event_ Event type type unsigned int bckevt_l_event_ Event subtype (if any) subtype unsigned int bckevt_q_event_ Reserved for use by VSI ctx [2] unsigned int bckevt_l_event_ Reserved for use by VSI handle Event Callback Buffer Formats describes the values returned in the bckEvent data structure. Table 1-2 Event Callback Buffer Formats Type/Subtype Format Value Returned BCK_EVENT_K_CONTROL bckControl See Control Event Subtypes. BCK_EVENT_K_ERROR_MSG (no subtype) bckMsgVect Message vector (use $PUTMSG to output message to user). BCK_EVENT_K_JOURNAL_OPEN (no subtype) dsc$descriptor String descriptor (name of file to create). BCK_EVENT_K_JOURNAL_CLOSE (no subtype) dsc$descriptor String descriptor (name of file to close). BCK_EVENT_K_JOURNAL_WRITE (no subtype) 512-byte File descriptor block of journal buffer (condensed journal records, refer to the BJLDEF structure definition in the BAPIDEF files). Table 1-2 (Cont.) Event Callback Buffer Formats Type/Subtype Format Value Returned BCK_EVENT_K_LIST_CLOSE (no subtype) Array of 2 LIST_TOTFILE: Total longwords files listed. LIST_TOTSIZE: Total blocks listed. Note: The application should close the list file. BCK_EVENT_K_LIST_OPEN TRUE dsc$descriptor File specification of list file to open (TRUE listing). FALSE dsc$descriptor (FALSE = 0). BCK_EVENT_K_LIST_WRITE BRH$K_SUMMARY BSRBLK List BACKUP save set - save set summary record. BRH$K_VOLUME BSRBLK List BACKUP save set - volume summary record. BRH$K_PHYSVOL PVABLK List BACKUP save set - physical volume record. BRH$K_FILE FARBLK List BACKUP save set - file record. BCK_EVENT_K_LISTJOUR_WRITE Subtype is a condition value that indicates the type of action that occurred for the specified file/item. Obtain message text with the $GETMSG system service. TRUE bckLisJourblk Journal file listing information (TRUE = 1, indicates a change of volume or save set). FALSE dsc$descriptor Journal file listing of file/item specification string (descriptor) (FALSE = 0). BCK_EVENT_K_LOG BACKUP$_AECREATED dsc$descriptor String descriptor (file logging). BACKUP$_COMPARED dsc$descriptor String descriptor (file logging). BACKUP$_COPIED dsc$descriptor String descriptor (file logging). BACKUP$_CREATED dsc$descriptor String descriptor (file logging). BACKUP$_CREDIR dsc$descriptor String descriptor (file logging). BACKUP$_HEADCOPIED dsc$descriptor String descriptor (file logging). BACKUP$_INCDELETE dsc$descriptor String descriptor (file logging). BACKUP$_NEWSAVSET dsc$descriptor String descriptor (file logging). BCK_EVENT_K_OP_PHASE BACKUP$_STARTVERIFY Condition Start of verify Value operation (obtain message text with $GETMSG). BACKUP$_STARTDELETE Condition Start of delete Value operation (obtain message text with $GETMSG). BACKUP$_STARTRECORD Condition Start of record Value operation (obtain message text with $GETMSG). BCK_EVENT_K_SAVESET_CLOSE (no subtype) RMS FOB A BACKUP save set must be closed. BCK_EVENT_K_SAVESET_OPEN (no subtype) RMS FOB A BACKUP save set must be opened or created. BCK_EVENT_K_SAVESET_READ (no subtype) BACKUP A BACKUP save set Buffer block/buffer has been Control read from the input Block save set. (BCBBLK) BCK_EVENT_K_SAVESET_WRITE (no subtype) BACKUP A BACKUP save set Buffer block/buffer is ready Control to be written to the Block output save set. (BCBBLK) BCK_EVENT_K_STATISTICS (no subtype) bckMsgVect Statistics message; one of the following message condition values (use $PUTMSG to output message to user): BACKUP$_STAT_ PHYSICAL BACKUP$_STAT_SAVCOP_ ACT BACKUP$_STAT_ INACTIVE BACKUP$_STAT_COMPARE BACKUP$_STAT_RESTORE BCK_EVENT_K_USER_MSG (no subtype) bckMsgVect Message vector (use $PUTMSG to output message to user). Control Event Subtypes describes the control event subtypes of the BCK_EVENT_K_CONTROL event callback. bckControl Format describes the format of the bckControl data structure. Table 1-3 Control Event Subtypes Format Subtype Field Description Confirmation is required for BCKEVTST_K_CONFIRM_EVENT compare or copy operation. bckCntrl_l_event BCKCNTRL_K_CONFIRM_EVENT bckCntrl_l_function Backup operation type (integer value) bckCntrl_a_ Confirmation message (bckMsgVect, outmsgvect BACKUP$_CNTRL_CONFCOMP or BACKUP$_ CNTRL_CONFCOPY) bckCntrl_v_response_ TRUE (response is required) required bckCntrl_r_response_ dsc$descriptor ("Yes/No" string buffer descriptor) Operator or user assistance is required to determine BCKEVTST_K_ASSIST_EVENT continuation/actions. bckCntrl_l_event BCKCNTRL_K_USER_ASSIST_EVENT or BCKCNTRL_K_OPER_ASSIST_EVENT bckCntrl_l_function Backup operation type (integer value) bckCntrl_a_ bckMsgVect (assist and other outmsgvect messages) bckCntrl_v_response_ TRUE or FALSE (TRUE = 1, if required response is required) bckCntrl_r_response_ dsc$descriptor (response string buffer descriptor) BACKUP operation restart is BCKCNTRL_K_RESTART_EVENT initiated. bckCntrl_l_event BCKCNTRL_K_RESTART_EVENT bckCntrl_l_function Backup operation type (integer value) bckCntrl_a_ bckMsgVect (operation restart outmsgvect message vector) bckCntrl_v_response_ FALSE (= 0, no response is required required) bckCntrl_r_response_ dsc$descriptor ("Yes/No" string buffer descriptor) Control events are described by the Control event subtype, via the bckevt_l_event_subtype field in the bckEvent structure. bckControl Format describes the format of the bckControl data structure. Table 1-4 bckControl Format Data Type Element Name Description unsigned int bckCntrl_l_event Control event type. unsigned int bckCntrl_l_ Backup operation type. function bckMsgVect *bckCntrl_a_ Output messages and outmsgvect parameters. union { unsigned int bckCntrl_l_ Flags. ctlflags struct { unsigned bckCntrl_v_ Response required = 1. response_required : 1 unsigned bckCntrl_v_fill_5 Filler. : 7 } } struct bckCntrl_r_ Descriptor for buffer to dsc$descriptor response_buffer which response text is to be written. unsigned int bckCntrl_l_ Reserved for use by VSI. response_status unsigned int bckCntrl_l_ Reserved for use by VSI. control_options Error Messages Where possible, the Backup API emulates the behavior of the interactive BACKUP utility if you pass a call that contains conflicting qualifiers by: 1. Making a best guess as to your intentions 2. Ignoring the least likely of the conflicting qualifiers 3. Issuing a message that warns of the conflicting qualifiers 4. Processing the BACKUP request See the VSI OpenVMS System Management Utilities Reference Manual: A-L for a table of valid combinations of BACKUP qualifiers.