Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Když aplikace WPD volá metodu IPortableDeviceCapabilities::GetCommandOptions, v tomto případě tato metoda aktivuje volání metody WpdCapabilities::OnGetCommandOptions v ukázkovém ovladači. Druhá metoda vytvoří IPortableDeviceValues objekt, do kterého ovladač uloží všechny podporované možnosti. Vzhledem k tomu, že ukázkový ovladač nepodporuje možnosti příkazů, kolekce vrácená touto metodou je prázdná.
HRESULT WpdCapabilities::OnGetCommandOptions(
IPortableDeviceValues* pParams,
IPortableDeviceValues* pResults)
{
HRESULT hr = S_OK;
PROPERTYKEY Command = WPD_PROPERTY_NULL;
CComPtr<IPortableDeviceValues> pOptions;
// First get ALL parameters for this command. If we cannot get ALL parameters
// then E_INVALIDARG should be returned and no further processing should occur.
// Get the command whose options have been requested
if (hr == S_OK)
{
hr = pParams->GetKeyValue(WPD_PROPERTY_CAPABILITIES_COMMAND, &Command);
CHECK_HR(hr, "Missing value for WPD_PROPERTY_CAPABILITIES_COMMAND");
}
// CoCreate a collection to store the command options.
if (hr == S_OK)
{
hr = CoCreateInstance(CLSID_PortableDeviceValues,
NULL,
CLSCTX_INPROC_SERVER,
IID_IPortableDeviceValues,
(VOID**) &pOptions);
CHECK_HR(hr, "Failed to CoCreateInstance CLSID_PortableDeviceValues");
}
// Add command options to the collection
if (hr == S_OK)
{
// If your driver supports command options, then they should be added here
// to the command options collection 'pOptions'.
}
// Set the WPD_PROPERTY_CAPABILITIES_COMMAND_OPTIONS value in the results.
if (hr == S_OK)
{
hr = pResults->SetIUnknownValue(WPD_PROPERTY_CAPABILITIES_COMMAND_OPTIONS, pOptions);
CHECK_HR(hr, "Failed to set WPD_PROPERTY_CAPABILITIES_COMMAND_OPTIONS");
}
return hr;
}