Delen via


Koppelingsmatrices

Een koppelingsmatrix is een geordende lijst met registerlocaties die worden gebruikt voor het opslaan van informatie over een itemtype, inclusief handlers, werkwoorden en andere kenmerken, zoals het pictogram en de weergavenaam van het type. De Shell maakt gebruik van koppelingsmatrices om een query uit te voeren op een vooraf gedefinieerde set registerlocaties die mogelijk informatie over een Shell-item bevatten.

Dit onderwerp is als volgt ingedeeld:

Over koppelingsmatrices

Een koppelingsmatrix is een geordende lijst met registerlocaties die informatie bevatten over een itemtype, waaronder handlers, werkwoorden en andere kenmerken, zoals het pictogram en de weergavenaam van het type. Deze informatie over het itemtype kan worden geregistreerd op verschillende specificiteitsniveaus. U kunt bijvoorbeeld een werkwoord registreren dat alleen wordt weergegeven voor een specifiek bestandstype (zoals .jpg), of voor alle items met dezelfde System.Kind (bijvoorbeeld System.kind = afbeelding) of voor alle items.

De Shell maakt gebruik van koppelingsmatrices om een query uit te voeren op een vooraf gedefinieerde set registerlocaties die mogelijk informatie over het item bevatten. De matrix-API's van de koppeling kunnen worden gebruikt om één waarde op te halen uit de registersubsleutel die de aangevraagde informatie bevat, waarbij die waarde afkomstig is van de eerste vermelding in de matrix die deze levert. De standaardpictogramwaarde wordt bijvoorbeeld op deze manier opgehaald. De koppelingsmatrix kan ook worden gebruikt om een set waarden op te halen die zijn opgeslagen in de registersubsleutels. De lijst met werkwoorden wordt bijvoorbeeld gemaakt op basis van die werkwoorden die zijn geregistreerd onder alle subsleutels.

Nadat de Shell een vooraf gedefinieerde set registerlocaties opvraagt voor informatie over een Shell-item, worden de registerlocaties in een matrix geplaatst op volgorde van de meest specifieke locatie naar de meest algemene.

Omdat koppelingsmatrices geordende lijsten zijn, bieden ze toepassingsontwikkelaars een mechanisme voor het toevoegen van informatie aan het register dat wordt geretourneerd voor een specifiek type item. Op dezelfde manier kunnen toepassingsontwikkelaars met koppelingsmatrices informatie toevoegen aan het register voor een specifieke groep items wanneer deze items op een meer algemene locatie worden geregistreerd. Deze logica informeert uw beslissing over de meest geschikte locatie in het register om informatie over Shell-items op te slaan.

Op een standaard Windows-systeem heeft een .jpg-bestand de volgende koppelingsmatrix:

  • HKEY_CLASSES_ROOT\jpg-bestand
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.jpg
  • HKEY_CLASSES_ROOT\afbeelding
  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects

Zie Toepassingsregistratievoor meer informatie over het registreren van koppelingsmatrices.

Query's uitvoeren op koppelingsmatrices

Er zijn Shell-API's voor het ophalen van informatie uit een reeks registersubsleutels, van de meest specifieke registersubsleutel tot een superset van de informatie in alle registersubsleutels.

Het meest voorkomende gebruik van een koppelingsmatrix is om een query uit te voeren op één waarde die de Shell retourneert van het meest specifieke element in de matrix met de aangevraagde informatie. In het volgende codevoorbeeld ziet u hoe u dit doet.

IQueryAssociations *pqa;

// pShellItem is assumed to be an existing IShellItem object.
hr = pShellItem->BindToHandler(NULL, BHID_AssociationArray, IID_PPV_ARGS(&pqa));
if (SUCCEEDED(hr))
{
    wchar_t szValue[256];
    DWORD cbValue = sizeof(szValue);      // Count of bytes in the array

    hr = pqa->GetData(0, ASSOCDATA_VALUE, L"InfoTip", szValue, &cbValue);
    if (SUCCEEDED(hr))
    {
        // The "InfoTip" value is used to compute the infotip string from
        // properties of an item.
    }
    pqa->Release();
}

De volgende API's kunnen worden gebruikt om een query uit te voeren op een koppelingsmatrix of om een koppelingsmatrix te maken IQueryAssociations object dat kan worden opgevraagd:

Werken met koppelingsmatrices voor een bepaalde shell-gegevensbron

Elke Shell-gegevensbron definieert de koppelingsmatrix voor de items. Het definiëren van een koppelingsmatrix is meestal een functie van het type item. Shell-gegevensbron-implementeerfuncties moeten de koppelingsmatrices definiëren en documenteren om toepassingen in staat te stellen het gedrag van deze typen uit te breiden, zoals voor het registreren van werkwoorden of andere informatie. Toepassingen kunnen het gedrag van items uitbreiden op basis van het toevoegen van gegevens aan de matrixsubsleutels van de koppeling, zoals het toevoegen van werkwoorden voor items.

De bestandssysteemgegevensbron bouwt een koppelingsmatrix voor bestanden op basis van de volgende registersubsleutels en speciale ProgID's:

  • Als het bestand een geregistreerde ProgID heeft, wordt HKEY_CLASSES_ROOT\ProgID gebruikt. Anders wordt HKEY_CLASSES_ROOT\Onbekende gebruikt.

  • De bestandsnaamextensie is geregistreerd onder HKEY_CLASSES_ROOT\SystemFileAssociations\.fileExtension subsleutel.

  • Speciale progID's worden weergegeven in de volgende tabel.

    Speciale progID Beschrijving
    HKEY_CLASSES_ROOT\* Alle bestanden (niet-mappen)
    HKEY_CLASSES_ROOT\AllFilesystemObjects Bestanden en bestandssysteemmappen
    HKEY_CLASSES_ROOT\Directory- Bestandssysteemmappen
    HKEY_CLASSES_ROOT\map Shell-containers

     

Shell-gegevensbronkoppelingsmatrices

De volgende lijst vertegenwoordigt enkele van de Shell-gegevensarchiefkoppelingsmatrices die kunnen worden gebruikt voor de doeleinden die in dit onderwerp worden beschreven:

  • HKEY_CLASSES_ROOT\*
  • HKEY_CLASSES_ROOT\AllFilesystemObjects
  • HKEY_CLASSES_ROOT\Kind.Document-
  • HKEY_CLASSES_ROOT\resultaten
  • HKEY_CLASSES_ROOT\SystemFileAssociations\.docx
  • HKEY_CLASSES_ROOT\Word.Document.12

Shell-gegevensbronkoppelingsmatrices die kunnen worden gebruikt voor DBFolder (een Shell-gegevensarchief dat items in zoekresultaten en op query's gebaseerde weergaven vertegenwoordigt), zijn als volgt:

  • Stations
  • Netwerk
  • RegItems
  • Voorbeelden:
    • ContentView
    • Werkwoorden

Andere veelgebruikte koppelingsmatrices zijn Map en Printers.

Aanvullende informatiebronnen

toepassingsregistratie

bestandstypen

hoe bestandskoppelingen werken

inhoudsweergave per bestandstype of type

bestandstype

bestandstypehandlers

programmatische id's

waargenomen typen