Шифрующая файловая система (EFS) фильтрует открытие зашифрованного файла таким способом, что приложение, которое открывает файл, получает доступ к незашифрованной информации, если оно, конечно, имеет надлежащие полномочия, чтобы получить доступ к файлу и получить ключ, необходимый, чтобы расшифровать файл. Последующие операции чтения в этом файле приведут к незашифрованному тексту. Это очень желательно для обычного доступа к зашифрованным файлам и сохраняет шифрование и расшифровку файлов прозрачной. Однако, это препятствует резервному копированию зашифрованных файлов, потому что, если резервное копирование предпринято со стандартными вызовами функций файлового ввода - вывода подобно CreateFile, ReadFile и WriteFile, файлы будут возвращаться к исходной версии открытого текста.
Чтобы решить эту проблему, предусматриваются функции без расшифровки данных. Резервное копирование приложениями - главный подразумеваемый пользователь этих функций. Эти функции без расшифровки данных отличаются от других функций файловой системы, тем, что функции открытия, чтения и записи дают возможность доступа к потокам нерасшифрованных данных, а также дают возможность читать/писать потоку $EFS. Поэтому программа, вызывающая функции без расшифровки данных не нуждается в доступе к криптографическим ключам, которые расшифровывают файл. Ниже перечислены API без расшифровки данных, которые доступны для использования приложениями резервного копирования и восстановления данных:
API без расшифровки данных | Описание |
---|---|
OpenEncryptedFileRaw | Открывает зашифрованный файл с доступом к данным в зашифрованном формате. |
CloseEncryptedFileRaw | Закрывает зашифрованный файл, открытый OpenEncryptedFileRaw. |
ReadEncryptedFileRaw | Читает зашифрованный файл, оставляя его данные в зашифрованном формате. |
WriteEncryptedFileRaw | Пишет в зашифрованный файл, оставляя его данные в зашифрованном формате. |
ImportCallback | Определяемый программой повторный вызов для использования с WriteEncryptedFileRaw. |
ExportCallback | Определяемый программой повторный вызов для использования с ReadEncryptedFileRaw. |