Re: sparse-files
- From
- Alex Fedotov ()
- To
- Pavel Pahomov ()
- Date
- 2001-11-05T02:27:45Z
- Area
- SU.WINDOWS.NT.PROG
From: "Alex Fedotov" <me@alexfedotov.com>
Pavel Pahomov wrote:
> AF> if(!oks)
> AF> {
> AF> DWORD le = GetLastError();
> AF> puts("Can't create sparse-file\n");
> AF> return 1;
> AF> }
>
> Замечание дельное, согласен. Но результат тот же :)
>
> ps: может надо еще какие-то другие библиотеки линковать? Непонятно...
Вот только что написал то же самое, работает без ошибок и даже
GetFileAttributes правильные атрибуты возвращает. Что называется, найдите
десять отличий. Ты уверен, что файловая система правильная?
- --- cut ---
HANDLE hFile = CreateFile(_T("C:\\sparse.dat"),
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL,
NULL);
if (hFile != INVALID_HANDLE_VALUE)
{
DWORD cbReturned;
if (!DeviceIoControl(hFile, FSCTL_SET_SPARSE, NULL, 0, NULL, 0,
&cbReturned, NULL))
{
DWORD dwError = GetLastError();
_RPT1(_CRT_WARN, "DeviceIoControl failed, err=%d\n", dwError);
}
CloseHandle(hFile);
}
_ASSERTE(GetFileAttributes(_T("C:\\sparse.dat")) &
FILE_ATTRIBUTE_SPARSE_FILE);
- --- cut ---
Еще можно рассмотреть гипотетическую возможность (я в нее не верю), что
ребята из Microsoft mess up с константой FSCTL_SET_SPARSE в разных версиях
Platform SDK. У меня она определена как
#define FSCTL_SET_SPARSE \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED,
FILE_SPECIAL_ACCESS)
-- Alex Fedotov
--- ifmail v.2.15dev5
* Origin: Undisclosed (2:5020/400)