Freigeben über


Speichern von Profilen

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Sie können die IWMProfileManager::SaveProfile-Methode verwenden, um den Inhalt eines Profilobjekts in einer Zeichenfolge zu speichern, die mit XML formatiert ist. Es werden keine Methoden zum Speichern der Profilzeichenfolge in einer Datei bereitgestellt. Sie können die Datei-E/A-Routinen Ihrer Wahl verwenden.

Hinweis

Sie sollten niemals die in eine Datei geschriebene Profilzeichenfolge ändern. Alle Änderungen, die Sie an einem Profil vornehmen möchten, sollten programmgesteuert vorgenommen werden. Das Ändern von Werten in einer PRX-Datei kann zu unvorhersehbaren Ergebnissen führen.

 

Das folgende Beispiel ist eine Funktion zum Speichern eines Profils in einer Datei mithilfe von Datei-E/A-Standard-E/A im C-Stil. Um eine Anwendung zu kompilieren, die dieses Beispiel verwendet, müssen Sie stdio.h in Ihr Projekt einschließen.

HRESULT ProfileToFile(IWMProfileManager* pProfileMgr, 
                      IWMProfile* pProfile)
{
    HRESULT hr = S_OK;

    FILE*   pFile;
    
    WCHAR*  pwszProfileString = NULL;
    DWORD   cchProfileString = 0;

    // Save the profile to a string.
    // First, retrieve the size of the string required.
    hr = pProfileMgr->SaveProfile(pProfile, 
                                  NULL, 
                                  &cchProfileString);
    if(FAILED(hr))
    {
        printf("Could not get the profile string size.");
        return hr;
    }

    // Allocate memory to hold the string.
    pwszProfileString = new WCHAR[cchProfileString];

    if(pwszProfileString == NULL)
    {
        printf("Could not allocate memory for the profile string.");
        return E_OUTOFMEMORY;
    }

    // Retrieve the string.
    hr = pProfileMgr->SaveProfile(pProfile, 
                                  pwszProfileString, 
                                  &cchProfileString);
    if(FAILED(hr))
    {
        printf("Could not save the profile string.");
        return hr;
    }

    // Create the output file.
    pFile = fopen("MyProfile.prx", "w");

    // Write the profile string to the file.
    fprintf(pFile, "%S\n", pwszProfileString);

    // Close the file.
    fclose(pFile);

    delete[] pwszProfileString;

    return S_OK;
}

Arbeiten mit Profilen