Metodo IMoniker::Reduce (objidl.h)
Riduce un moniker alla forma più semplice.
Sintassi
HRESULT Reduce(
[in] IBindCtx *pbc,
[in] DWORD dwReduceHowFar,
[in, out] IMoniker **ppmkToLeft,
[out] IMoniker **ppmkReduced
);
Parametri
[in] pbc
Puntatore all'interfaccia IBindCtx nel contesto di associazione da usare in questa operazione di associazione. Il contesto di associazione memorizza nella cache gli oggetti associati durante il processo di associazione, contiene parametri che si applicano a tutte le operazioni che usano il contesto di associazione e fornisce i mezzi con cui l'implementazione del moniker deve recuperare informazioni sul relativo ambiente.
[in] dwReduceHowFar
Specifica il grado di riduzione del moniker. Questo parametro deve essere uno dei valori dell'enumerazione MKRREDUCE .
[in, out] ppmkToLeft
All'ingresso, un puntatore a una variabile puntatore IMoniker che contiene il puntatore di interfaccia al moniker a sinistra di questo moniker. Questo parametro viene usato principalmente dagli implementatori di moniker per consentire la cooperazione tra i vari componenti di un moniker composito; i client moniker possono in genere passare NULL.
In caso contrario, *ppmkToLeft è in genere impostato su NULL, che indica che non viene apportata alcuna modifica al moniker originale a sinistra. In rari casi, *ppmkToLeft indica un moniker, che indica che il moniker precedente a sinistra deve essere ignorato e il moniker restituito tramite *ppmkToLeft è la sostituzione. In tale situazione, l'implementazione deve chiamare Release sul moniker precedente a sinistra di questo moniker e deve chiamare AddRef sul nuovo moniker restituito; il chiamante deve rilasciarlo in un secondo momento. Se si verifica un errore, l'implementazione può lasciare invariato il puntatore all'interfaccia o impostarlo su NULL.
[out] ppmkReduced
Puntatore a una variabile puntatore IMoniker che riceve il puntatore di interfaccia alla forma ridotta di questo moniker, che può essere NULL se si verifica un errore o se questo moniker viene ridotto a nulla. Se questo moniker non può essere ridotto, *ppmkReduced viene semplicemente impostato su questo moniker e il valore restituito è MK_S_REDUCED_TO_SELF. Se *ppmkReduced è diverso da NULL, l'implementazione deve chiamare AddRef sul nuovo moniker; è responsabilità del chiamante chiamare Release. Questo vale anche se *ppmkReduced è impostato su questo moniker.
Valore restituito
Questo metodo può restituire i valori restituiti standard E_OUTOFMEMORY e E_UNEXPECTED, nonché i valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Metodo completato correttamente. |
|
Questo moniker non può essere ridotto ulteriormente, quindi ppmkReduced indica questo moniker. |
|
Impossibile completare l'operazione entro il limite di tempo specificato dalla struttura di BIND_OPTS del contesto di associazione. |
Commenti
Questo metodo è destinato agli usi seguenti:
- Abilitare la costruzione di macro o alias definiti dall'utente come nuovi tipi di classi moniker. In caso di riduzione, viene restituito il moniker in cui viene valutata la macro.
- Abilitare la costruzione di un tipo di moniker che tiene traccia dei dati durante lo spostamento. In caso di riduzione, viene restituito il moniker dei dati nella posizione corrente.
- Nei file system che supportano un metodo basato su identificatore per l'accesso ai file indipendenti dai nomi file; un moniker di file può essere ridotto a un moniker che contiene uno di questi identificatori.
Note ai chiamanti
Gli scenari descritti in precedenza non sono attualmente implementati dalle classi moniker fornite dal sistema.Devi chiamare Reduce prima di confrontare due moniker usando il metodo IMoniker::IsEqual perché un moniker ridotto è nel formato più specifico. IsEqual può restituire S_FALSE su due moniker prima che vengano ridotti e restituiti S_OK dopo la riduzione.
Note per gli implementatori
Se il moniker corrente può essere ridotto, l'implementazione non deve ridurre il moniker sul posto. Deve invece restituire un nuovo moniker che rappresenta lo stato ridotto di quello corrente. In questo modo, il chiamante ha ancora la possibilità di usare il moniker non introdotto , ad esempio enumerando i relativi componenti. L'implementazione deve ridurre il moniker almeno per quanto richiesto.Note specifiche dell'implementazione
Implementazione | Note |
---|---|
Anti-moniker | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker di classe | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker file | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker composito generico | Questo metodo chiama in modo ricorsivo Reduce per ogni moniker componente. Se uno dei componenti si riduce, il metodo restituisce S_OK e restituisce un composto dei componenti ridotti. Se non si verifica alcuna riduzione, il metodo restituisce lo stesso moniker e restituisce MK_S_REDUCED_TO_SELF. |
Moniker elemento | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker OBJREF | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker puntatore | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Moniker URL | Questo metodo restituisce MK_S_REDUCED_TO_SELF e passa indietro lo stesso moniker. |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | objidl.h |