Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
3 / 2 / 1
Регистрация: 21.01.2020
Сообщений: 57

Программа падает при работе с буфером с кодом ошибки -1073741571

18.02.2021, 21:44. Показов 2299. Ответов 3

Студворк — интернет-сервис помощи студентам
Написал небольшую программу для перечисления файлов и папок в определённой директории. При достижении папки с названием Windows Defender завершает свою работу с кодом -1073741571. Как исправить данную неприятную ситуацию?

main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
#include "ntfile.h"
#include <stdio.h>
 
int main()
{
    NTGetFSObjInDir(
        L"C:\\",
        L"*"
    );
    getchar();
}
ntfile.h:
C++
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
#if defined (_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
 
#ifndef _WINDOWS_ && _INC_WINDOWS && VOID
#include <Windows.h>
#endif
 
#ifndef _CRT_BEGIN_C_HEADER
#include <malloc.h>
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
 
    void NTGetFSObjInDir(LPCWSTR lpcwNtDirectoryPath, LPCWSTR lpcwNtFSObjSearchMask)
    {
        DWORD szBuff = 999999;
        WIN32_FIND_DATA wfd = { 0 };
        SetCurrentDirectory(lpcwNtDirectoryPath);
 
        HANDLE search = FindFirstFile(lpcwNtFSObjSearchMask, &wfd);
        if (search == INVALID_HANDLE_VALUE)
        {
            SetLastError(-1);
            return;
        }
 
        do
        {
            LPWSTR ntFileFullPath = (LPWSTR)calloc(szBuff + 1, sizeof(WCHAR));
 
            GetCurrentDirectoryW(szBuff, ntFileFullPath);
            wcscat_s(ntFileFullPath, szBuff, L"\\");
            wcscat_s(ntFileFullPath, szBuff, wfd.cFileName);
 
            LPWSTR ntNextDirectory = (LPWSTR)calloc(wcslen(ntFileFullPath) + 1, sizeof(WCHAR));
            wcscpy_s(ntNextDirectory, wcslen(ntFileFullPath) + 1, ntFileFullPath);
 
            if (wcscmp(wfd.cFileName, L".") && wcscmp(wfd.cFileName, L".."))
            {
                if (((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) && (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)))
                {
                    NTGetFSObjInDir(ntNextDirectory, lpcwNtFSObjSearchMask);
                    SetCurrentDirectory(lpcwNtDirectoryPath); //<- не забыть!!!!
                }
                else
                {
                    //FILE
                }
                wprintf(ntFileFullPath);
                printf("\n");
            }
            free(ntFileFullPath);
            free(ntNextDirectory);
        } while (FindNextFile(search, &wfd));
        FindClose(search);
    }
 
#ifdef __cplusplus
}
#endif
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.02.2021, 21:44
Ответы с готовыми решениями:

При работе с буфером обмена падает 1С
Нашел в интернете описание работы с буфером 1С. Вот код получения текста из буфера. Объект = Новый...

Выводится ошибка при работе с буфером
Подскажите не пойму что за ошибка

Исключение при работе с буфером обмена
Задача: при нажатии на кнопку, в буфер обмена копируется текст. Я делаю это таким образом: private void...

3
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.02.2021, 22:03
Цитата Сообщение от Starte25 Посмотреть сообщение
Написал небольшую программу для перечисления файлов и папок в определённой директории. При достижении папки с названием Windows Defender завершает свою работу с кодом -1073741571. Как исправить данную неприятную ситуацию?
Не нужно использовать при поиске файлов SetCurrentDirectory и GetCurrentDirectoryW, это может привести к зацикливанию, как в твоём случае. У тебя бесконечная рекурсия получается
0
3 / 2 / 1
Регистрация: 21.01.2020
Сообщений: 57
18.02.2021, 22:13  [ТС]
oleg-m1973, понятно, сейчас попробую убрать

Добавлено через 3 минуты
oleg-m1973, но тогда программа не будет заходить во вложенные папки
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
18.02.2021, 22:17
Цитата Сообщение от Starte25 Посмотреть сообщение
oleg-m1973, но тогда программа не будет заходить во вложенные папки
Ну так ты при рекурсивном вызове добавляй wfd.cFileName к lpcwNtDirectoryPath
C++
1
2
3
4
5
6
7
8
9
10
11
12
if (wcscmp(wfd.cFileName, L".") && wcscmp(wfd.cFileName, L".."))
            {
                if (((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) && (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)))
                {
 
 
                    NTGetFSObjInDir(lpcwNtDirectoryPath + "\\" + wfd.cFileName, lpcwNtFSObjSearchMask);
 
 
                    SetCurrentDirectory(lpcwNtDirectoryPath); //<- не забыть!!!!
                }
                else
Добавлено через 48 секунд
Естественно, не при помощи +
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.02.2021, 22:17
Помогаю со студенческими работами здесь

При чтении по адресу приложение падает с кодом 0x0
При попытке считать разрешение экрана по адресу который я ввожу, консоль просто падает. При этом, адрес верный - через чит энжин я...

Lotus падает при работе с Com
Добрый день! Вот такая эпидерсия: Есть агент. Работает на клиенте. Его задача - взять из RichTextItemа аттач, выгрузить на диск и...

Падает ФПС при работе от сети
ФПС значительно падает при зарядке ноутбука В стресс тесте тротлинга и перегрева не заметил (~70 градусов) Например Farcry 4 ...

Падает система при работе Торрента
Всем привет! Уже давно наблюдается такая проблема: как запускаю торрент, по прошествии примерно часа, система либо виснет, либо выдает...

Apache падает при работе с MySQL
Здравствуйте. Ситуация следующая скрипты php которые работают без MySQL прекрасно обрабатываются, но стоит запустить какой-нибудь скрипт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru