2016-07-13 2 views
0

Я создал виртуальную ленточную библиотеку с Firestreamer. Я написал код в C++, который копирует файл на эту виртуальную ленту. Но когда я пытаюсь подготовить ленту с функцией windows PrepareTape, она терпит неудачу. Ниже приведена часть моего кода, где я назвал функцию окна PrepareTape.PrepareTape не работает в моем коде C++

   /*Tape Handle*/ 
       LPCWSTR tapeName = L"\\\\.\\Tape1"; 
       HANDLE tapeHandle = CreateFile(tapeName, 
        /*GENERIC_READ | GENERIC_WRITE*/ GENERIC_ALL, 
        0, 
        0, 
        OPEN_EXISTING, 
        FILE_ATTRIBUTE_ARCHIVE | FILE_FLAG_BACKUP_SEMANTICS, 
        0); 
       if (tapeHandle == NULL) 
       { 
        cout << "ERROR::Unable To Open handle for the tape in this machine the error is ::" << GetLastError() << endl; 
       } 
       else 
       { 
        wcout << "The Handle for the tape :" << tapeName << " is created successfully" << endl; 
       } 
       /*Prepare Tape*/ 
       DWORD prepareTApeSuccess = PrepareTape(
        tapeHandle, 
        TAPE_LOAD, 
        TRUE 
        ); 

       if (prepareTApeSuccess == NO_ERROR) 
       { 
        cout << "Prepare Tape successsfully executed" << endl; 
       } 
       else 
       { 
        cout << "Prepare Tape Failed with the error :" << prepareTApeSuccess << endl; 
       } 
       if (!CloseHandle(tapeHandle)) 
       { 
        cout << "Close handle for the file is failed with thie error" << GetLastError() << endl; 
       } 

Выход

The Handle for the tape :\\.\Tape1 is created successfully 
Prepare Tape Failed with the error :1 

Но остальные все то есть другие функции ленты работают хорошо с той же ручкой. Я попытался получить статус ленты с функцией GetTapeStatus. Устройство ленты готово принять соответствующие команды доступа к ленте без ошибок, возвращаемое значение равно NO_ERROR.

Заранее спасибо

ответ

0

В функции подготовки ленты рассмотрит третий параметр, если этот параметр равен TRUE, то функция немедленно возвращается. Если это FALSE, функция не возвращается, пока операция не будет завершена. Я изменил его на false, и моя проблема была решена.

Смежные вопросы