Table of Contents


Here's an example of validating a tape

#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <stdio.h>
#include "NxCoreAPI.h"
#include "NxCoreAPI_class.h"    
  
NxCoreClass nxCoreClass;    
  
int __stdcall nxCoreCallback(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage)
{
    switch (pNxCoreMessage->MessageType)
    {
        case NxMSG_STATUS:
        {
            switch (pNxCoreSys->Status)
            {
                case NxCORESTATUS_ERROR:
                {
                    printf("Tape error: %.2d:%.2d:%.2d.%3d\n",
                        (int) pNxCoreSys->nxTime.Hour,
                        (int) pNxCoreSys->nxTime.Minute,
                        (int) pNxCoreSys->nxTime.Second,
                        (int) pNxCoreSys->nxTime.Millisecond);
                    return NxCALLBACKRETURN_STOP;
                }    
  
                // WAITFORCOREACCESS is not necessarally an error.
                // It is generated when: 
                //
                // 1) You are running from the current days tape
                // (IE not from a tape file) and signifies NxCoreAccess 
                // program is not running or is in a transitional state
                // from one day to the next. In this case it is safe to continue.
                // 
                // 2) The tape file is incomplete. In this case the application
                // should stop.
                //
                // For this example we will let the program continue.
                //
                case NxCORESTATUS_WAITFORCOREACCESS:
                {
                    printf("Wait For Access: %.2d:%.2d:%.2d.%3d\n",
                        (int) pNxCoreSys->nxTime.Hour,
                        (int) pNxCoreSys->nxTime.Minute,
                        (int) pNxCoreSys->nxTime.Second,
                        (int) pNxCoreSys->nxTime.Millisecond);
                }
            }
            break;
        }
    }    
  
    return NxCALLBACKRETURN_CONTINUE;
}    
  
int main(int argc, char** argv)
{
    if (argc == 1)
    {
        fprintf(stderr, "Usage: %s Tape\n", argv[0]);
        return -1;
    }
    if (!nxCoreClass.LoadNxCore("NxCoreAPI.dll") &&
        !nxCoreClass.LoadNxCore("C:\\Program Files\\Nanex\\NxCoreAPI\\NxCoreAPI.dll"))
    {
        fprintf(stderr, "Can't find NxCoreAPI.dll\n");
        return -1;
    }
    int rc = nxCoreClass.ProcessTape(argv[1], 0, 0, 0, nxCoreCallback);
    if (rc)
    {
        printf("%s is not valid: %d\n", argv[1], rc);
    }
    else
    {
        printf("%s is valid\n", argv[1]);
    }
    return 0;
}