Ошибка 997 протекает наложенное событие ввода вывода

  • Remove From My Forums
  • Вопрос

  • Здравствуйте

    Часто сталкиваюсь с ошибкой 

    12029. Не удается установить связь с сервером
    Last WSock error: 997. Протекает наложенное событие ввода/вывода

    программа сетевая, есть загрузчик, который выкачивает модули ПО, это происходит без ошибок. Но при попытке передать учетные данные возникает такая ошибка. Или бывает еще так: программа виснет,а в логе такая ошибка.

    Таким образом, физически связь есть.

    Объясните пожалуйста природу возникновения ошибки и как от нее избавиться.

    Что значит наложенное событие?

  • Remove From My Forums
  • Вопрос

  • Добрый день.

    При установке Microsoft® SQL Server® 2014 Express возникает ошибка 997 протекает наложенное событие ввода вывода.

    Как бороться с этой ошибкой?

    На компе установлен Windows 10.

    Очень жду ответа.

    • Перемещено

      22 августа 2016 г. 16:21
      Более подходящий раздел форума

Ответы

  • Здравствуйте,

    Уточните пожалуйста, если в целях тестирования переименовать следующий каталог, проблема решается?

    C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18

    напрмер на:

    C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18.bak

    Best Regards, Andrei …
    MCP

    • Изменено
      SQxModerator
      25 августа 2016 г. 8:23
      добавлено
    • Помечено в качестве ответа
      Petryshka
      25 августа 2016 г. 20:11

  • Добрый день.

    При установке Microsoft® SQL Server® 2014 Express возникает ошибка 997 протекает наложенное событие ввода вывода.

    Как бороться с этой ошибкой?

    На компе установлен Windows 10.

    Очень жду ответа.

    Добрый день.

    Не
    ваш случай 

    Суда по системным требованиям Windows 10 не поддерживается. См. ниже

    Требования к системе

    Поддерживаемая операционная система

    Windows 7; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2008 R2; Windows Server 2008 R2 SP1; Windows Server 2012; Windows Server 2012 R2                

      • Processor (Процессор)  
          • совместимый с Intel, имеющий частоту не ниже 1 ГГц.
        • ОЗУ  
          • не менее 512 МБ для SQL Server Express с инструментами и SQL Server Express с дополнительными службами, 4 ГБ для служб Reporting Services, которые устанавливаются вместе с SQL Server Express с дополнительными
            службами.
        • Объем жесткого диска  
        • 4,2 ГБ дискового пространства.

      ОграниченияMicrosoft SQL Server Express поддерживает 1 физический процессор, 1 ГБ памяти и 10 ГБ дискового пространства.


    Я не волшебник, я только учусь
    MCP, MCTS. Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий.
    Блог IT Инженера и
    IT Reviews

    • Изменено
      Alexander RusinovModerator
      22 августа 2016 г. 15:01
      Дополнил
    • Предложено в качестве ответа
      Alexander RusinovModerator
      22 августа 2016 г. 15:02
    • Помечено в качестве ответа
      Иван ПродановMicrosoft contingent staff, Moderator
      23 августа 2016 г. 5:45

cvip

3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

1

22.05.2012, 10:29. Показов 4733. Ответов 9

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Всем доброго. Давно не был здесь, но вот представился повод.
Сразу отмечу, что поиск курил. Но, то ли нет моей проблемы, то ли не так искал.
Начну по-порядку. Взял я себе плату небольшую и решил побаловаться с ней. Все настроил. Закодил ее. Потом перешел к Delphi. Почитал про работу с COM портами. Сразу отказался от использования компонентов в пользу WinAPI, чтобы четко понимать происходящее и все Тру делать.

Для начала все отбыдлокодил, подключение / запись посадил на кнопки без процедур / функций и вроде все заработало. Начал с отправки одного символа. И ОНО сработало. Вот тут пошло первичное оформление кода. Автоматический поиск платы, принудительное подключение к определенному порту и прочие хотелки. По факту написания всех функций и процедур начал тестирование / отладку и тут «на тебе» — 997. Протекает наложенное событие ввода / вывода. Что за хрень? Ладно. Переписываю все заново. Добавляю настройки таймаутов, перехожу в асинхронный режим работы. Тестирую. Та же ерунда. Подумал на плату. Вдруг что пишет в порт, а я не знаю. Сношу код платы, перезаливаю пустой. Очистил ее полностью. Тестирую — 997 [facepalm]. В оформлении кода и оптимизации прошло еще 2 вечера. Потом еще 2 на чтение WinAPI по работе с COM портами и типичными ошибками.

Короче, я бессилен. Чувствую, что без опыта коллег мои нервы будут съедены напрочь. Теперь к коду…

Подключение к плате:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
procedure ForcedConnectToBoard(ForcedPort: string);
begin
if connected = false then
  begin
  hPort := CreateFile(
                      PChar(ForcedPort), //Указываем порт
                      GENERIC_READ or GENERIC_WRITE, //Для чего открываем порт
                      0, //Указываем отсутствие общего доступа к порту
                      nil, //Нет атрибутов защиты
                      OPEN_EXISTING, //Аттрибут открытия порта
                      FILE_FLAG_OVERLAPPED, //Указываем для синхронной работы с портом
                      0 //Не указано, зачем это нужно, но говорят, что нужно
                      );
 
    //Проверка на наличие подключения
    if hPort = INVALID_HANDLE_VALUE //Если Хендл порта не присвоен
          then
            SendToMonitor('Ошибка соединения с портом ' + ForcedPort + SendError)
          else
            begin
            SendtoMonitor('Успешное подключение к плате.');
            //Пишем состояние подключения в переменную
            connected:=true;
            end;
 
    //Настройка порта
    if not GetCommState(hPort, Dcb) //Получаем данные о настройках порта
          then
            SendToMonitor('Ошибка получения данных о состоянии порта' + SendError)
          else
            begin
              //Настраиваем порт
              Dcb.BaudRate := CBR_9600; //Скорость соединения 9600
              Dcb.Parity := NOPARITY; //Нет контроля четности
              Dcb.ByteSize := 8; //1 байт - 8 бит
              Dcb.StopBits := ONESTOPBIT; //1 стоповый бит
            end;
 
    //Установка конфигурации порта
    if not SetCommState(hPort, Dcb)
          then
            SendToMonitor('Ошибка конфигурации порта' + SendError)
          else
            SendToMonitor('Конфигурация порта произведена успешно.');
 
    //Получение структуры CommTimeOut
    if not GetCommTimeouts(hPort, CommTimeouts)
        then SendToMonitor('Ошибка получения данных о таймаутах' + SendError)
          else
            begin
              CommTimeouts.ReadIntervalTimeout :=MAXDWORD;  //Настраиваем ReadFile на немедленный прием всех данных из буфера порта
              CommTimeouts.ReadTotalTimeoutMultiplier := 0; //...настраиваем
              CommTimeouts.ReadTotalTimeoutConstant := 0;   //...и продолжаем настраивать
              CommTimeouts.WriteTotalTimeoutMultiplier := 0;//А для WriteFile таймаут...
              CommTimeouts.WriteTotalTimeoutConstant := 0;  //...не требуется
              //Пишем новые параметры структуры
              SetCommTimeouts(hPort, CommTimeouts); //записываем измененную структуру
            end;
 
    //Очистка порта
    if not PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR)
          then
            SendToMonitor('Ошибка сброса порта' + SendError)
          else
            SendToMonitor('Порт сброшен и готов к работе.');
 
    //Разделитель в монитор
    SendSeparator;
  end
  else
    SendToMonitor('Подключение уже установлено.');
end;

Запись в порт(файл):

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
procedure SendCommand(WriteBuf: PChar);
var
  LenBytesToSend, LenBytesSended: DWORD;
  OverWrite: TOverlapped;
begin
 //Очищаем монитор
 ClearMonitor;
 
 //Получаем количество посылаемых байт
 LenBytesToSend:= SizeOf(WriteBuf);
 
 //Очистка порта
 if not PurgeComm(hPort, PURGE_TXCLEAR or PURGE_RXCLEAR)
      then SendToMonitor('Ошибка сброса порта' + SendError)
      else SendToMonitor('Порт сброшен и готов к работе');
 
 //Создаем событие записи
 OverWrite.hEvent := CreateEvent(nil, True, False, nil);
 if OverWrite.hEvent = Null
  then  SendToMonitor('Ошибка создания события записи' + SendError);
 
 //Собственно запись в порт
 if not WriteFile(
                  hPort,          //Порт, в который ведем запись
                  WriteBuf^,      //Что пишем в порт. ^ - не пойму для чего, без нее тоже вроде нормально работает...
                  LenBytesToSend, //Количество послаемых байт
                  LenBytesSended, //Количество реально посланных байт
                  @OverWrite      //Используем структуру OverLapped для ассинхронной записи
                  )
      then SendToMonitor('Ошибка отправки команды в порт' + SendError)
      else SendToMonitor('Команда успешно отправлена. Количество отправленных байт: ' + IntToStr(LenBytesSended));
 
end;

Вот такая ерунда. Заранее спасибо за ответы и помощь.

Добавлено через 10 часов 23 минуты
Еще одни момент: сброс порта (Purge) не помогает ни разу…



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

22.05.2012, 10:29

Ответы с готовыми решениями:

Ошибка при работе с COM-портом
Здравствуйте!
Пульт, собранный на микроконтроллере, периодически посылает по RS485 на компьютер…

Работа с сом-портом
Суть программы-обмен данными с некоторым микроконтроллером.
Одна из особенностей- RX и TX…

Работа с СОМ портом
Для тех кто в танке то есть мой случай . Думаю можно отдельную тему вынести программирование СОМ…

Работа с сом-портом
Есть прибор подключаемый через сом-порт и хотелось бы написать программу получения данных с помощью…

9

10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

22.05.2012, 10:59

2

…это значит, что операции ввода-вывода у вас в коде перекрываются http://msdn.microsoft.com/en-u… s.85).aspx. Вы привели весь код?



0



3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

23.05.2012, 15:22

 [ТС]

3

2raxp — спасибо, я понимаю, что это значит.
Я не понимаю, откуда это появляется и как с этим бороться.
По коду привел все, что участвует. Если нужно, могу скинуть весь код (правда вечером). Но после компиляции я использую лишь кнопку подключения и кнопку записи. Вроде больше ничего не выполняется. 4 дня уже, все перепроверил. Может просто глаз замылен…

Добавлено через 1 минуту
UPD: CancelIoEx — только сейчас увидел в API, теоретически должно помочь?

Добавлено через 21 час 58 минут
CancelIO — не помогло, а CancelIoEx не идентифицируется… Кто-нибудь? Чем-нибудь?

Добавлено через 5 часов 22 минуты
Пойду ка я к Вашим младшим братьям. Лучше маленький форум, но хоть сколько-то эффективный, а не за 2 дня 1 полуживой ответ/вопрос от капитана. Конверсии никакой…



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

23.05.2012, 16:08

4

Не по теме:

…форум — не чат, как будет время — ответят, никто не обязан мониторить именно вашу тему. Кода полного не дождались, хотя к вечеру обещали, интерес угас. А гадать на кофейной гуще — это к бабкам.

Поскольку вы работаете в асинхронном режиме, то ERROR_IO_PENDING (997), который возвращает вам GetLastError() (а эту проверку в вашем коде не наблюдаю), говорит о том, что операция выполняется в фоне и нужно подождать, всего лишь.



0



3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

23.05.2012, 16:24

 [ТС]

5

Не по теме:

Не по теме: я в курсе, что форум не чат. А полного кода никто и не просил. Я же специально отметил, что если нужно — приведу. Оказалось, что никому не нужно. И я знаю, что нужно это в первую очередь мне, но не имею привычки без повода засирать темы, ибо сам модератор.

Проверка GetLastError сидит в процедуре SendError, там комплексный лог генерится, застандартил его, чтобы каждый раз не писать.

Если я правильно Вас понял, то смотреть мне нужно либо в сторону снятия if not проверки (что некорректно, но без нее работало — получается в ней проблема), либо, что более вероятно, в сторону WaitForSingleObject.

Интересно только: какое оптимальное время для ожидания?

И… спасибо



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

23.05.2012, 17:01

6

Проверка GetLastError сидит в процедуре SendError, там комплексный лог генерится, застандартил его, чтобы каждый раз не писать.

точно? Так дело не пойдет, выкладываем всю подноготную. Как модератору вам должна быть знакома тема телепатов

в сторону WaitForSingleObject

да.

какое оптимальное время для ожидания?

хм, устройство ваше? Или дергайте разработчика о его таймаутах в протоколе обмена.



0



cvip

3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

24.05.2012, 20:19

 [ТС]

7

Цитата
Сообщение от raxp
Посмотреть сообщение

точно? Так дело не пойдет, выкладываем всю подноготную. Как модератору вам должна быть знакома тема телепатов

Есть такая беда, но и засирателей хватает, выложу код, как доберусь до дома, но уверяю Вас, там ни намека на вмешательство в процесс. Процедура получает String и после него впечатывает код последней ошибки. Все.

Цитата
Сообщение от raxp
Посмотреть сообщение

хм, устройство ваше? Или дергайте разработчика о его таймаутах в протоколе обмена.

Arduino, не нашел в документации темы таймаутов, да и при работе с COM портом (по статьям в сети), таймауты на запись не ставятся. Остается искусственная задержка WaitForSingleObject для гарантии передачи данных или получении адекватного кода ошибки

Добавлено через 1 час 51 минуту

Delphi
1
2
3
4
5
function  SendError: string;
begin
  //Получение кода последней ошибки для отправки в монитор
  Result:='! Код ошибки: ' + IntToStr(GetLastError);
end;

Добавлено через 50 минут
дописал WaitForSingleObject, теперь программа даже за 10 секунд не отправляет 1 символ… Уже крыша едет…

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 //Собственно запись в порт
        WriteFile(
                  hPort,          //Порт, в который ведем запись
                  WriteBuf^,      //Что пишем в порт. ^ - не пойму для чего, без нее тоже вроде нормально работает...
                  LenBytesToSend, //Количество послаемых байт
                  LenBytesSended, //Количество реально посланных байт
                  @OverWrite      //Используем структуру OverLapped для ассинхронной записи
                  );
      waited := WaitForSingleObject(hPort, 10000);
      case waited of
           WAIT_OBJECT_0: SendToMonitor('Команда успешно отправлена. Количество отправленных байт: ' + IntToStr(LenBytesSended));
           Wait_timeout: SendToMonitor('Время ожидания отправки в порт истекло');
           WAIT_FAILED: SendToMonitor('Ошибка отправки команды в порт' + SendError);
           WAIT_ABANDONED: SendToMonitor('Мьютекс шалит. Где-то перекрестные потоки...');
      end;

UPD: waited: THandle

Добавлено через 20 часов 0 минут
Блииннн…

Добавлено через 4 часа 23 минуты
Ладно, продолжаю ждать…



0



10229 / 6607 / 498

Регистрация: 28.12.2010

Сообщений: 21,156

Записей в блоге: 1

24.05.2012, 23:50

8

Не по теме:

…обещанного три года ждут :)

Что такое SendToMonitor() ? Чего у него внутри?



0



cvip

3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

25.05.2012, 22:51

 [ТС]

9

Да ничо особенного

Delphi
1
2
3
4
5
procedure SendToMonitor(SendedMessage: string);
begin
 Form1.Memo1.Lines.Add(IntToStr(MonitorLine)+')' + SendedMessage);
 MonitorLine:=MonitorLine + 1;
end;

Добавлено через 18 часов 25 минут
Не да?



0



3 / 3 / 0

Регистрация: 08.10.2010

Сообщений: 114

28.05.2012, 11:03

 [ТС]

10

Может быть все таки кто-нибудь знает в чем дело?



0



Содержание

  1. Протекает наложенное событие ввода вывода windows 7
  2. Протекает наложенное событие ввода вывода windows 7
  3. Вопрос
  4. Ответы
  5. Сбой при установке: «Ошибка 997. Выполняется операция ввода-вывода с перекрытием
  6. Проблема
  7. Причины
  8. Решение
  9. Решение 1. Измените имя папки Microsoft\Crypto\RSA.
  10. Решение 2. Установите исправление.
  11. Решение 3. Удалите обновления, которые вызывают ошибку.
  12. Решение 4. Измените реестр.
  13. Протекает наложенное событие ввода вывода windows 7
  14. Протекает наложенное событие ввода вывода windows 7

Протекает наложенное событие ввода вывода windows 7

Сообщения: 52168
Благодарности: 15064

» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>

Сообщения: 52168
Благодарности: 15064

Сообщения: 52168
Благодарности: 15064

GIGABAIT, у вас в разделе реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
параметр MachineGuid какой-то кривой, с иероглифами.

Надо восстановить корректное значение.
Для начала верните обратно переименованную папку C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18 и приведите результат выполнения в командной строке (cmd.exe)

» width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″> » width=»100%» style=»BORDER-RIGHT: #719bd9 1px solid; BORDER-LEFT: #719bd9 1px solid; BORDER-BOTTOM: #719bd9 1px solid» cellpadding=»6″ cellspacing=»0″ border=»0″>

Сообщения: 52168
Благодарности: 15064

Источник

Протекает наложенное событие ввода вывода windows 7

Вопрос

При установке Microsoft® SQL Server® 2014 Express возникает ошибка 997 протекает наложенное событие ввода вывода.

Как бороться с этой ошибкой?

На компе установлен Windows 10.

Ответы

Уточните пожалуйста, если в целях тестирования переименовать следующий каталог, проблема решается?

При установке Microsoft® SQL Server® 2014 Express возникает ошибка 997 протекает наложенное событие ввода вывода.

Как бороться с этой ошибкой?

На компе установлен Windows 10.

Суда по системным требованиям Windows 10 не поддерживается. См. ниже

Требования к системе

Windows 7; Windows 7 Service Pack 1; Windows 8; Windows 8.1; Windows Server 2008 R2; Windows Server 2008 R2 SP1; Windows Server 2012; Windows Server 2012 R2

ОграниченияMicrosoft SQL Server Express поддерживает 1 физический процессор, 1 ГБ памяти и 10 ГБ дискового пространства.

Я не волшебник, я только учусь MCP, MCTS. Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий. Блог IT Инженера и IT Reviews

Источник

Сбой при установке: «Ошибка 997. Выполняется операция ввода-вывода с перекрытием

Проблема

MSI (s) (D8:38) [14:20:10:710]: SECREPAIR: CryptAcquireContext succeeded

MSI (s) (08:A4) [14:22:31:690]: SECUREREPAIR: SecureRepair Failed. Error code: 35F03B34B8

Причины

Эта известная неполадка может быть вызвана обновлением системы безопасности Microsoft KB2918614. Обновление использует криптографические ключи и сертификаты для хэширования файлов установки вместе с профилем пользователя, выполнившего вход в систему. Когда установка пакета MSI осуществляется через обязательный или временный профиль пользователя, возникает ошибка, так как использование криптографических ключей и сертификатов в обязательных и временных профилях невозможно.

Решение

Решение 1. Измените имя папки Microsoft\Crypto\RSA.

C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18
— на
C:\ProgramData\Microsoft\Crypto\RSA\S-1-5-18_BAK

Попробуйте установить программное обеспечение Autodesk еще раз.

Решение 2. Установите исправление.

Скачайте и установите данное исправление Microsoft, чтобы исправить ошибки обновления безопасности Microsoft KB2918614.

Решение 3. Удалите обновления, которые вызывают ошибку.

Выберите «Панель управления» > «Удаление программы» (или «Программы и компоненты»).

В меню слева выберите «Просмотр установленных обновлений».

В поле поиска в правой верхней части экрана введите KB2918614.

Удалите найденное обновление.

Повторите поиск для KB3072630, KB3000988 и KB3008627.

Если они есть в списке, также удалите их.

Решение 4. Измените реестр.

Если после применения решений 1–3 установить продукт по-прежнему не удается, отредактируйте реестр Windows, добавив код продукта, который вы пытаетесь установить. Добавьте этот код продукта в SecureRepairWhiteList в реестре Windows.
Предупреждение! Используйте редактор реестра Microsoft® с осторожностью и только после сохранения резервной копии реестра, а также файлов system.dat и user.dat, как описано в указаниях к вашей операционной системе в базе знаний Майкрософт и в разделе Резервное копирование системного реестра. Дополнительные сведения о реестре содержатся в разделах справки редактора реестра Microsoft.

Откройте меню «Пуск» и в поле «Выполнить» введите regedit. После этого нажмите «ОК».

В меню «Правка» нажмите «Создать» и выберите «Параметр DWORD».

Введите SecureRepairPolicy в качестве имени DWORD, заменив New Value #1, и нажмите клавишу ENTER.

Щелкните правой кнопкой мыши SecureRepairPolicy и нажмите «Изменить».

В поле «Значение» введите 2 и нажмите кнопку «ОК».

Найдите и откройте следующий подраздел реестра:

В меню «Правка» нажмите «Создать» и выберите «Раздел».

Введите SecureRepairWhitelist в качестве имени и нажмите клавишу ENTER.

Дважды щелкните ключ SecureRepairWhitelist, чтобы открыть его.

Закройте редактор реестра и попробуйте еще раз установить программное обеспечение Autodesk.

Источник

Протекает наложенное событие ввода вывода windows 7

Сообщения: 138
Благодарности: 4

Профиль | Отправить PM | Цитировать

Когда жму просмотр событий пишет «Служба журнала событий не доступна. Убедитесь, что служба запущена»

Cлужба уведомления о системных событиях работает но если нажать остановить то пишет «Не удалось остановить службу Служба уведомления о системных событиях на Локальный компьютер. Ошибка 997: Протекает наложенное событие ввода/вывода.»
При этом она всё равно останавливается.

Так же не устанавливается Realtek HD Audio Driver R2.77. Ждёт очень долго потом пишет «Сбой установки драйвера Realtek HD Audio! [Error Code : 0x000005B4]».

Дело в том что я менял права на system32 на себя потом обратно на trustedinstaller и нажал галку заменить владельца всех подконтейнеров и объектов и это я так понимаю убило мне всё?
Есть возможность вернуть права всему на те которые были без переустановки винды? Или вообще проблема не в правах?

Ещё одну беду обнаружил когда жму планировщик заданий пишет «Выбранная задача «<0>» больше не существует. Чтобы просмотреть текущие задачи, нажмите «Обновить».»
Ещё в проводнике почти всем папкам присваевается тип изображения и огромные значки хотя там и близко их нет.

Источник

Протекает наложенное событие ввода вывода windows 7

Установка таймаутов:
procedure hCommSetTimeOuts(Rit: DWORD; Rttm: DWORD;
Rttc: DWORD; Wttm: DWORD; Wttc: DWORD);
var
t: TCOMMTIMEOUTS;
begin
GetCommTimeouts(hCommPort,t);
t.ReadIntervalTimeout:= Rit;
t.ReadTotalTimeoutMultiplier:=Rttm;
t.ReadTotalTimeoutConstant:=Rttc;
t.WriteTotalTimeoutMultiplier:=Wttm;
t.WriteTotalTimeoutConstant:=Wttc ;
if Not(SetCommTimeouts(hCommPort,t)) then SystemMessError();
end;

Аналогичная бодяга творится и с функцией ReadFile. Когда вместо WriteFile, я использую функцию TransmitCommChar (т.е. передаю всю посылку побайтно). Такая фишка работает прекрасно в 98-х виндах, но не в XP.


Digitman ( 2003-08-08 09:37 ) [1]


> выдает сообщение: «Протекает наложенное событие ввода/вывода».
> Когда вместо праметра этой функции «@ovr», ставлю «nil»,
> возникает другая ошибка после ее выполнения «Параметр задан
> неверно».

все верно. так и должно быть.

Overlapped operations enable a thread to execute a time-consuming I/O operation in the background, leaving the thread free to perform other tasks. To enable overlapped I/O operations on a communications resource, the thread must specify the FILE_FLAG_OVERLAPPED flag in the CreateFile function when the handle is opened. To execute the ReadFile or WriteFile function as an overlapped operation, the calling thread must specify a pointer to an OVERLAPPED structure.The OVERLAPPED structure must contain a handle to a manual-reset (not an auto-reset) event object. The system sets the state of the event object to not-signaled when a call to the I/O function returns before the operation has been completed. The system sets the state of the event object to signaled when the operation has been completed. The thread uses a wait function to check the current state of the event object or to wait for its state to be signaled.

The ReadFileEx and WriteFileEx functions can be performed only as overlapped operations. The calling thread specifies a pointer to the FileIOCompletionRoutine function, which is executed when the overlapped operation is completed. The completion routine is executed only if the calling thread performs an alertable operation.
For more information about event objects, wait functions, alertable waits, and completion routines, see Synchronization.


N169 ( 2003-08-08 10:23 ) [2]

+ Кстати насчёт «EscapeCommFunction(hCommPort,SETDTR)»

Если задана аппаратная поддержка квитирования, DTR управляется автоматически, и эта ф-я всегда будет возвращать FALSE, так что разумно игнорировать её возврат


MAPIIIAJL ( 2003-08-08 12:20 ) [3]

Digitman ©, Я попробую сделать ожидание окончания операции передачи таким макаром:

WriteFile(hCommPort,buf,l,dwSize,@ovr);
if(WaitForSingleObject(ovr.hEvent,2000)=WAIT_OBJECT_0) then
( hCommPort,ovr,dwSize,FALSE ) Digitman ©, Я попробую сделать ожидание окончания операции передачи таким макаром:

WriteFile(hCommPort,buf,l,dwSize,@ovr);
if(WaitForSingleObject(ovr.hEvent,2000)=WAIT_OBJECT_0) then
GetOverlappedResult(hCommPort,ovr,dwSize,FALSE)
else begin
// Обработка ошибки //
result:= False;
end;

Но, проблема в том что я не вижу посылки на осцилографе.
Однако при использовании TransmitCommChar, я ее вижу.
А допустим мне ненужна асинхронная приемопередача. Как мне сделать так, чтобы при синронной приемопередаче функция WriteFile работала нормально?


Digitman ( 2003-08-08 13:20 ) [4]

оставь свой осциллограф на время в покое)


Nucl ( 2003-08-10 16:58 ) [6]


MAPIIIAJL ( 2003-08-10 20:31 ) [7]

Nucl © В том примере, что ты мне дал есть небольшое НО.
Ограничения: D6, WinXP. У меня стоит D7 и WinXP.
Если ты прочитал вопрос, то стоит проблема работы в WinXP.
Конечно, необходимо чтобы все работало и в 98, и в WinXP.
И еще компоненты различные тоже брать не очень хочется, мне кажется что просто все решается с помощью API функций.


Nucl ( 2003-08-10 20:57 ) [8]

2 Маршал
да нет его там, рулит везде (сам проверял)


MAPIIIAJL ( 2003-08-11 00:27 ) [9]

Nucl ©
Ок. Спасибо, попробую. Заманчивый код.


> WriteFile возвращает False. Код возврата GetLastError соответствует
> 997!

Все верно. ERROR_IO_PENDING = 997, как и ожидалось.


MAPIIIAJL ( 2003-08-11 10:44 ) [11]

WaitForSingleObject(ovr.hEvent,2000) возвращает 0. Как я понимаю, что соответствует WAIT_OBJECT_0.


Digitman ( 2003-08-11 11:18 ) [12]

т.е. оверлэп-операция завершилась.

следом же д.б. вызов GetOverlappedResult(), который даст инф-цию о числе байт, успешно отправленных в результате операции

Points to a 32-bit variable that receives the number of bytes that were actually transferred by a read or write operation


MAPIIIAJL ( 2003-08-11 12:01 ) [13]

GetOverlappedResult(hCommPort,ovr,dwSize,FALSE);
Все правильно и эта функция возвращает True. Значит операция успешно завершилась. И в счетчике байт dwSize стоит 16. Поеду на работу сгоняю проверю, как это все с устройством работает. Отпишусь как приеду. Спасиб.


MAPIIIAJL ( 2003-08-11 21:05 ) [14]

Digitman
Все заработало в лучшем виде. Все оказалось очень просто. Единственное что я не уяснил, это: что именно ожидает функция WaitForSingleObject?

WaitForSingleObject() ожидает перевода системой объекта hEvent в сигналящее состояние


MAPIIIAJL ( 2003-08-12 09:54 ) [16]

Digitman
Огромное тебе спасибо за помощь.

Источник

In SQL server 2014, I try to invoke a sql script using command line:

~ osql -U sa -P passwd -i script.sql

and I get an error message:
Login failed for user ‘sa’
OS Error 997 Overlapped I/O operation is in progress.

However, when I run the command in interactive mode:

~ osql -U sa -i script.sql

it asks for password and the command succeeds. Can someone please help me how to run sql scripts purely from command line without user intervention?

thanks.

asked Sep 25, 2014 at 7:16

Sankaran's user avatar

2

I just ran into a 997 error when using osql as well. It would appear that osql is not reporting errors correctly, giving error 997 instead of a more helpful error. Presumably this is due to it being deprecated.

In my case, the actual cause was the Server Authentication mode being set to «Windows Authentication mode» rather than «SQL Server and Windows Authentication mode». This can be changed by connecting using SQL Server Management Studio and going into the top level properties for the connection, then selecting the Security page.

Additionally, I had to enable the sa login, via Security -> Logins -> sa -> right click -> Properties on the Object Explorer, then setting the login to Enabled using the Status page.

answered Jan 20, 2015 at 6:24

Cam Sinclair's user avatar

This happened to me, and it came down to the wrong password.

answered Jul 11, 2017 at 15:31

MiloTheGreat's user avatar

I also had the same issue. I tried sqlcmd instead of osql and it gave me a more understandable error, in my case the problem was that I was using the wrong password for that particular database.

My advise is that if anyone comes across a similar issue, use sqlcmd which is the successor to the osql command. Also use a -o so that you get a text file with the output of the problem.

answered Feb 10, 2016 at 7:16

Sizons's user avatar

SizonsSizons

6402 gold badges8 silver badges24 bronze badges

Понравилась статья? Поделить с друзьями:
  • Ошибка 998 на терминале при оплате
  • Ошибка 99 терминал сбербанка как исправить самостоятельно
  • Ошибка 99 пинпад не подключен сбербанк что делать
  • Ошибка 99 на котле риннай как исправить
  • Ошибка 994 на лджи телевизоре