Re[3]: Дефрагментация и FSCTL_MOVE_FILE
От: dimb82  
Дата: 13.08.12 03:54
Оценка: 1 (1)
Во-первых, попробуйте добавить привилегию SeManageVolumePrivilege. Возможно, это поможет.


BOOL AddPrivilege(LPCTSTR PrivilegeName)
{
    HANDLE                hToken = NULL;
    TOKEN_PRIVILEGES    tkp;
    BOOL    ret = FALSE;

    while (1)
    {
        if (!OpenProcessToken(GetCurrentProcess(),
            TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
            break;

        //------------------------------------------
        if (!LookupPrivilegeValue(NULL, PrivilegeName,
            &tkp.Privileges[0].Luid))
            break;

        tkp.PrivilegeCount = 1;
        tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

        ret = AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
            (PTOKEN_PRIVILEGES) NULL, 0);

        break;
    }

    if (hToken)
        CloseHandle(hToken);

    return ret;
}

void main()
{
    setlocale(LC_ALL,"");

    AddPrivilege(SE_MANAGE_VOLUME_NAME);
    
    GetClusters("f:\\Wide_Wallpapers_pac\\1 (124).jpg",1);
    return;
}



А во-вторых, никогда не вываливайте на форум кучу кода со словами "что-то тут не работает". Никто за вас не будет отлаживать этот код. Если хотите получить от кого-то помощи, всегда конкретизируйте проблему. Что именно не работает, как вы определили, что не работает, как должно быть. Если функция возвращает ошибку, то указывайте код ошибки.



B>Оригинал работает, а моя версия нет, хотя все параметры передаются, по-моему, правильно и функция возвращает ненулевое значение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.