[Prev][Next][Index][Thread]
Re: the return of the Public Identifier Question
Terry Allen wrote:
>
> What matters is that indirection gets handled, not necessarily which piece
> of the machinery handles it. To determine whether it is necessary
> to specify which piece of the machinery does the work, you have to
> articulate a model of the machinery or of its operations.
Literally, you specify the object interface chain you want to use.
What you say about the URL processor is relevant. For COM/OLE, you
would be using the IMoniker interfaces in right to left order to
BindToObject in a chain. To get efficiency, the Running Object Table
is consulted as well as the system registry. If a URL moniker is
used, a bind context object is used to pass the moniker object a
pointer to its client. The URL moniker is asynchronous, of course,
to enable the return of data a little at a time and uses a callback.
The client creates the moniker by passing the URL to the
CreateURLMoniker
library function. To initialize, the client calls
IPersistMoniker::Load.
It passes a pointer to the IMonkiker interface of the URL Moniker.
Library functions (MkParseDisplayName and MkParseDisplayNameEx) turn
naming strings into monikers. They only know how to locate and run
the code that handles a specific type of name. MkParseDisplayNameEx
accepts a URL in the form ProgID:Name. The ProgID is a character string
translated to a Class ID (CLSID) using the registry. So, to extend the
naming code, create the code that handles the naming type and install it
with a
ProgID and a Class ID for the code.
Anyway, that's one way, by the book.
len
References: