IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

[win32] virtdisk et vss


Sujet :

Bibliothèques

  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut [win32] virtdisk et vss
    Bonjour,
    je voudrais savoir si la librairie win32 virtdisk et sa fonction MirrorVirtualDisk permettent de sauvegarder des disques virtuels de machines virtuelles en cours d'utilisation ou s'il faut utiliser l'api vss pour cela.(volume shadow copy service)
    d'autre part vss necessite que l'application soit lancee en tant qu'admin et est ce que virtdisk necessite cela aussi?

  2. #2
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    bon apres quelques investigations je peux repondre en partie à ma question : du coté de vss ,sur les windows 8 et 10 on peut sauvegarder des machines virtuelles entiere en faisant des snapshots des disques durs virtuels et fichier de machines virtuelle et ca fonctionne bien (j'ai fait un backup du disque virtuel pour le moment)
    je pense qu on peut faire des choses plus fines que sur les versions serveurs de windows apparemment puisque le programme sur codeplex hvbackup ne fonctionne que sur les windows serveurs ou il y a hyper serveur. (par contre je n'ai pas encore compris toutes les subtilites de ce programme car c'est du c# mais j'ai vu qu il utilise au debut un vss writer et la fonction clusterpreparesharedvolumeforbackup.d'ailleurs il y a une version 2 de ce programme sur github, forkee par d'autres personnes.

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    bonjour, j'ai essayé le virtual hard disk management sample ,c++, en telechagrement de microsoft,uniquement la fonction samplemirrordisk que j'ai un peu modifiée,i.e. j'ai remplace l'appel à breakmirrorvirtualdisk par un appel à CancelIo et j'ai enlevé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if (opStatus != ERROR_SUCCESS)
                {
                    goto Cleanup;
                }
    apres l'appel à GetVirtualDiskOperationProgress, et ca me renvoie une error io_pending et ca ne copie pas le .vhdx.
    j'avais besoin de faire fonctionner cet exemple pour tester la libraire virtdisk...je me demande si le parametre VIRTUAL_DISK_ACCESS_NONE de la fonction openvirtualdisk est correct il aurait fallu peut etre mettre un acces en lecture ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    Bon, juste au moment de partir,j'ai vu que j'ai oublie d'appeler GetResultOverlapped avec TRUE avant mon appel a CancelIo.je vais tester cela demain......

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    Bon j'ai un programme qui commence à fonctionner avec la libraire virtdisk mais la version mingw64 ne backup pas des disques durs virtuels en cours d'utilisation tandis que la version vs2013 le fait.apparemment dans vs j'utilise par defaut le sdk windows 8 ou 8.1 et dans mingw64 j'ai mis la version à windows 8 aussi bien que je suis sous win10 là(j'ai essaye aussi win10).je ne voie pas pourquoi j'ai une erreur dans le cas de la version mingw64.surtout qu apparemment les deux versions utilisent la meme dll de windows virtdisk.dll...la version mingw64 backup quand meme des disques qui ne sont pas utilises.

  6. #6
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    pour la version mingw64 et pour un disque virtuel en cours d'utilisation, il y a une erreur 32 sur openvirtualdisk.pas d'erreur avec la version vs2013 mais pourtant les deux utilisent la meme dll de windows,virtdisk.dll

  7. #7
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    ca fonctionne maintenant avec la version mingw64,j'ai du rajouter la version2 dans la structure OPEN_VIRTUAL_DISK_PARAMETERS dans virtdisk.h.
    il ne me reste plus qu à corriger un bug du programme : je fais un GetOverlappedResult avant la fin du programme et il ya aussi un goto dans ce programme de microsoft,(pas trop joli) et apparemment si je ferme la console ca supprime le fichier mirroré et ca ne m'affiche pas le message de succes aussi d'ailleurs.donc il y a un pb dans ce programme (ci dessous la fin du programme):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    opStatus = MirrorVirtualDisk(
            vhdHandle,
            MIRROR_VIRTUAL_DISK_FLAG_NONE,
            &mirrorParameters,
            &overlapped
            );
     
        if ((opStatus == ERROR_SUCCESS) || (opStatus == ERROR_IO_PENDING))
        {
            //
            // The mirror is completed once the "CurrentValue" reaches the "CompletionValue".
            //
            // Every subsequent write will be forward to both the source and destination until the
            // mirror is broken.
            //
     
            for (;;)
            {
                memset(&progress, 0, sizeof(progress));
     
                opStatus = GetVirtualDiskOperationProgress(vhdHandle, &overlapped, &progress);
    			/*
    			if (opStatus != ERROR_SUCCESS)
                {
                    goto Cleanup;
                }*/
     
                opStatus = progress.OperationStatus;
                if (opStatus == ERROR_IO_PENDING)
                {
                    if (progress.CurrentValue == progress.CompletionValue)
                    {
    					break;
                    }
     
                }
                else
                {
                    //
                    // Any status other than ERROR_IO_PENDING indicates the mirror failed.
                    //
                    goto Cleanup;
                }
     
                Sleep(1000);
            }        
        }
        else
        {
    		printf("%s","error MirrorVirtualDisk\n");
    	   goto Cleanup;
        }
    	resoverlapped=GetOverlappedResult(vhdHandle,&overlapped,&octets,TRUE);
        //res=CancelIo(vhdHandle);
     
    		 goto Cleanup; 
     
    Cleanup:
     
        if (opStatus == ERROR_SUCCESS)
        {
            wprintf(L"success\n");
        }
        else
        {
            wprintf(L"error = %u\n", opStatus);
    		Sleep(10000);
        }
     
        if (vhdHandle != INVALID_HANDLE_VALUE)
        {
            CloseHandle(vhdHandle);
        }
     
        if (overlapped.hEvent != NULL)
        {
            CloseHandle(overlapped.hEvent);
        }
     
        return opStatus;
     }

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    ok je n'aurais pas du commenter le code avec la fonction Breakmirrorvirtualdisk.je vais la remettre et ajouter cette fonction dans le virtdisk.h et le .def et je reviens quand j'aurais teste tout cela....

  9. #9
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 294
    Par défaut
    bon c'est ok avec l'exemple de microsoft,pour mingw64 en ayant ajouté des choses au virtdisk.h (et au virtdisk.def pour refaire libvirtdisk.a).j'ai pu faire un backup avec virtdisk d' un vhdx utilisé et contrairement à vss cela ne necessite pas de lancer en tant qu administrateur.

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. [Kylix] kylix3 ----> win32
    Par blue dans le forum EDI
    Réponses: 3
    Dernier message: 28/01/2003, 11h27
  3. gcc et win32
    Par MatRem dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 16/01/2003, 12h22
  4. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38
  5. convertir un nom long (win32) en format dos (8+3)
    Par kylekiller dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2002, 13h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo