Udostępnij przez


Zapisywanie profilów

[Funkcja skojarzona z tą stroną, windows Media Format 11 SDK, jest starszą funkcją. Został zastąpiony przez czytnik źródłowy i zapisnik . Czytnik źródła i Zapis do ujścia zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał czytnika źródeł i modułu zapisywania ujścia zamiast zestawu SDK windows Media Format 11, jeśli jest to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Możesz użyć metody IWMProfileManager::SaveProfile, aby zapisać zawartość obiektu profilu w ciągu sformatowanym przy użyciu kodu XML. Nie są dostępne żadne metody przechowywania ciągu profilu do pliku; możesz skorzystać z dowolnie wybranych procedur operacji wejścia/wyjścia na plikach.

Notatka

Nigdy nie należy zmieniać tekstu profilu zapisanego w pliku. Wszelkie zmiany, które chcesz wprowadzić w profilu, powinny zostać wprowadzone programowo. Zmiana wartości w pliku prx może spowodować nieprzewidywalne wyniki.

 

Poniższy przykład to funkcja zapisywania profilu do pliku przy użyciu standardowych operacji we/wy na plikach w stylu C. Aby skompilować aplikację korzystającą z tego przykładu, musisz dołączyć plik stdio.h do projektu.

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;
}

Praca z profilami