Recupero dello stato di burn

[La funzionalità associata a questa pagina, Lettore multimediale Windows SDK, è una funzionalità legacy. È stato sostituito da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer invece di Lettore multimediale Windows SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Nell'esempio di codice seguente vengono definiti i controlli della finestra di dialogo seguenti:

ID controllo Descrizione
IDC_BURN_STATE Testo statico che rappresenta lo stato dell'operazione di masterizzazione CD.
IDC_PROGRESS Indicatore di stato con un intervallo compreso tra 0 e 100 che rappresenta lo stato di avanzamento totale del burn.
IDC_PROGRESS_TEXT Testo statico che rappresenta lo stato di avanzamento totale della masterizzazione come numero compreso tra 0 e 100.
IDC_AVAILABLE_TIME Testo statico per visualizzare il tempo disponibile nel CD, espresso in secondi.
IDC_FREE_SPACE Testo statico per visualizzare lo spazio disponibile nel CD, in byte.
IDC_TOTAL_SPACE Testo statico per visualizzare la capacità totale del CD, in byte.

 

È possibile monitorare lo stato di avanzamento dell'operazione di combustione chiamando periodicamente IWMPCdromBurn::get_burnProgress mentre il CD viene bruciato. Questo metodo recupera un valore di stato per l'intera operazione di combustione. Il valore recuperato è un numero che rappresenta la percentuale di completamento della combustione, da 0 a 100.

// Update the progress bar IDC_PROGRESS
// and the corresponding text string IDC_PROGRESS_TEXT.
long lProgress = 0;
hr = m_spCdromBurn->get_burnProgress(&lProgress);
if (SUCCEEDED(hr))
{
    SendMessage(GetDlgItem(IDC_PROGRESS),
        PBM_SETPOS, lProgress, 0);
    SetDlgItemInt(IDC_PROGRESS_TEXT, lProgress);
}

È possibile ottenere lo stato corrente dell'operazione di combustione chiamando IWMPCdromBurn::get_burnState. Questo metodo recupera un'enumerazione che specifica l'operazione corrente eseguita.

// Retrieve the burn state.
WMPBurnState wmpbs = wmpbsUnknown;
HRESULT hr = m_spCdromBurn->get_burnState(&wmpbs);

if (SUCCEEDED(hr))
{
    // Set the burn state string.
    CComBSTR bstrState;
    switch (wmpbs)
    {
        case wmpbsUnknown:
        default:
            hr = bstrState.Append("Unknown state.");
            break;
        case wmpbsBusy:
            hr = bstrState.Append("Windows Media Player is Busy.");
            break;
        case wmpbsReady:
            hr = bstrState.Append("Ready to begin burning.");
            break;
        case wmpbsWaitingForDisc:
            hr = bstrState.Append("Waiting for disc.");
            break;
        case wmpbsRefreshStatusPending:
            hr = bstrState.Append("The burn playlist has changed.");
            m_spCdromBurn->refreshStatus();
            break;
        case wmpbsPreparingToBurn:
            hr = bstrState.Append("Preparing to burn the CD.");
            break;
        case wmpbsBurning:
            hr = bstrState.Append("The CD is being burned.");
            break;
        case wmpbsStopped:
            hr = bstrState.Append("The burning operation is stopped.");
            break;
        case wmpbsErasing:
            hr = bstrState.Append("Erasing the CD.");
            break;
    }
    if (SUCCEEDED(hr))
    {
        SetDlgItemTextW(IDC_BURN_STATE, bstrState.m_str);
    }
}

Per recuperare il numero di secondi di attesa del CD, chiamare IWMPCdromBurn::getItemInfo con "AvailableTime" come primo parametro. Il valore recuperato da questa funzione è rappresentato da una stringa.

// Set "AvailableTime" string
CComBSTR bstrTime;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("AvailableTime");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTime);
}
if (SUCCEEDED(hr))
{
    hr = bstrTime.Append(" seconds");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_AVAILABLE_TIME, bstrTime.m_str);
}

Per recuperare la quantità di spazio disponibile su un disco, chiamare IWMPCdromBurn::getItemInfo con "FreeSpace" come primo parametro. Il valore recuperato da questa funzione è una stringa che rappresenta il numero di byte liberi disponibili sul disco.

// Set "FreeSpace" string
CComBSTR bstrFreeSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("FreeSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrFreeSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrFreeSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_FREE_SPACE, bstrFreeSpace.m_str);
}

Per recuperare la capacità totale di un disco, chiamare IWMPCdromBurn::getItemInfo con "TotalSpace" come primo parametro. Il valore recuperato da questa funzione è una stringa che corrisponde al numero totale di byte sul disco.

// Set "TotalSpace" string.
CComBSTR bstrTotalSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("TotalSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTotalSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrTotalSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_TOTAL_SPACE, bstrTotalSpace.m_str);
}

Masterizzazione di un CD

Recupero dell'interfaccia di masterizzazione CD

Avvio del processo di burn

Cancellazione di un CD scrivibile

Recupero dello stato dell'unità e del disco