Win32 API CreateDirectory с FLAG_DELETE_ON_CLOSE. Возможный? - PullRequest
2 голосов
/ 13 апреля 2011

Я, конечно, не эксперт в программировании на Win32 API, но я только что узнал, что с помощью функции CreateFile я могу пометить ее как удаляемую операционной системой, как только ее дескриптор станет освобожден с использованием значения FILE_FLAG_DELETE_ON_CLOSE. Кажется, я не могу найти способ сделать то же самое с помощью CreateDirectory, или я что-то пропустил?

При желании я могу подписаться на изменения в этой конкретной папке (например, на создание новых файлов), а затем каким-либо образом пометить все файлы в папке этим флагом?

1 Ответ

4 голосов
/ 13 апреля 2011

Вы можете открыть дескриптор каталога, используя флаг FILE_FLAG_BACKUP_SEMANTICS:

#include <windows.h>
#include <stdio.h>
void main()
{
    CreateDirectory(".\\testdir",NULL);
    system("pause");
    HANDLE hDir = CreateFile(".\\testdir",0,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_DELETE_ON_CLOSE,NULL);
    CloseHandle(hDir);
}

Это сработало на компьютере, на котором я тестировал (если каталог пуст), но я не уверен, что онзадокументировано как действительная вещь.

...