Windows — PrepareTape терпит неудачу в моем коде C ++

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

                /*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

Решение

В функции подготовки ленты рассмотрим третий параметр. Если этот параметр имеет значение ИСТИНА, функция возвращается немедленно. Если это ЛОЖЬ, функция не возвращается, пока операция не была завершена. Я изменил это на ложное, и моя проблема была решена.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector