Freigeben über


IWMDMDeviceSession::EndSession-Methode (mswmdm.h)

Die EndSession-Methode beendet eine Gerätesitzung.

Syntax

HRESULT EndSession(
  [in] WMDM_SESSION_TYPE type,
  [in] BYTE              *pCtx,
  [in] DWORD             dwSizeCtx
);

Parameter

[in] type

Eine WMDM_SESSION_TYPE , die den Typ der zu beendenden Sitzung beschreibt. Dies muss derselbe bitweise OR der in BeginSession angegebenen Werte sein.

[in] pCtx

Optionaler Zeiger auf einen vom Aufrufer zugewiesenen Sitzungskontextpuffer für die private Kommunikation zwischen der Anwendung und dem Dienstanbieter. Anwendungen, die über Kenntnisse des zugrunde liegenden Dienstanbieters verfügen, können diesen Puffer verwenden, um kontextspezifische Daten an ihn zu übergeben. Windows Media Geräte-Manager führt in diesem Kontext keine Aktionen aus. Der Aufrufer ist für die Freigabe dieses Puffers verantwortlich.

[in] dwSizeCtx

Größe des Kontextpuffers in Bytes. Wenn die Größe 0 ist, wird pCtx ignoriert. Wenn die Größe ungleich 0 ist, muss pCtx ein gültiger Zeiger sein.

Rückgabewert

Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:

  • Standard-COM-Fehlercodes
  • In HRESULT-Werte konvertierte Windows-Fehlercodes
  • Windows Media Geräte-Manager Fehlercodes
Eine umfassende Liste möglicher Fehlercodes finden Sie unter Fehlercodes.

Hinweise

Eine Sitzung klammert eine Gruppe von Vorgängen an ein Gerät ein, sodass Windows Media Geräte-Manager Komponenten die Leistung optimieren kann, indem allgemeine Setup- und Herunterfahrfunktionen nur einmal statt bei jeder einzelnen Übertragung ausgeführt werden. Weitere Informationen finden Sie unter BeginSession.

Als Reaktion auf einen EndSession-Aufruf ruft Windows Media Geräte-Manager EndSession für den Anbieter für sichere Inhalte und den Dienstanbieter auf. Wenn einer der Aufrufe fehlschlägt, gibt Windows Media Geräte-Manager einen Fehler zurück. In diesem Fall ist es möglich, dass EndSession für eine der Komponenten erfolgreich war.

Beispiele

Der folgende C++-Code veranschaulicht die Verwendung einer Sitzung zum Bündeln eines Insert3-Aufrufs auf einem Gerät. Der Code durchläuft eine Reihe von Dateien, die in einem Vektor gespeichert sind, und sendet sie an das Gerät.


// Get the session interface.
CComQIPtr<IWMDMDeviceSession> pSession(pDevice);
if (pDevice == NULL)
{
    // TODO: Display a message that the app wasn't able to retrieve the IWMDMDeviceSession interface.
    return E_NOINTERFACE;
}

// Start the session. We don't use a custom buffer.
hr = pSession->BeginSession(WMDM_SESSION_TRANSFER_TO_DEVICE, NULL, NULL);
if (hr != S_OK)
{
    / /TODO: Display a message indicating that the session failed to start.
    return hr;
}
else
{
    // TODO: Display a message indicating that the session started.
}


// Insert files. These calls happen synchronously.
UINT flags = WMDM_MODE_BLOCK | WMDM_STORAGECONTROL_INSERTINTO | WMDM_FILE_CREATE_OVERWRITE | WMDM_CONTENT_FILE;
CComPtr<IWMDMStorage> pNewStorage;
for(int i = 0; i < sourceFiles.size(); i++)
{
    hr = pStorageControl3->Insert3(
        flags,
        WMDM_FILE_ATTR_FOLDER,
        sourceFiles[i],
        NULL, // Use default name.
        NULL, // Don't specify IWMDMOperation
        NULL, // Don't specify IWMDMProgress
        NULL, // Don't specify metadata
        NULL, // Nothing to send to the SCP.
        &pNewStorage);

    if (pNewStorage != NULL)
        pNewStorage.Release();
    CHECK_HR(hr, "Sent file " << sourceFiles[i] << " to the device.", "Couldn't send file " << sourceFiles[i] << " to the device");
}

// Close the session.
hr = pSession->EndSession(WMDM_SESSION_TRANSFER_TO_DEVICE, NULL, NULL);
CHECK_HR(hr,"Closed the session.","Couldn't close the session.");

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile mswmdm.h
Bibliothek Mssachlp.lib

Weitere Informationen

IWMDMDeviceSession-Schnittstelle

IWMDMDeviceSession::BeginSession

WMDM_SESSION_TYPE