Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
De informatie in dit onderwerp is van toepassing op alle versies van Windows 10 en hoger. We verwijzen hier naar deze versies als 'Windows', waarbij eventuele uitzonderingen waar nodig worden aangeroepen.
API-sets afhankelijk zijn van ondersteuning voor het besturingssysteem in het bibliotheeklaadprogramma om een modulenaamruimteomleiding effectief te introduceren in het bindingsproces van de bibliotheek. De api-set contractnaam wordt gebruikt door het bibliotheeklaadprogramma om een runtimeomleiding van de verwijzing uit te voeren naar een binaire doelhost die de juiste implementatie van de API-set bevat.
Wanneer het laadprogramma een afhankelijkheid ondervindt van een API-set tijdens runtime, raadpleegt het laadprogramma configuratiegegevens in de installatiekopie om het binaire hostbestand voor een API-set te identificeren. Deze configuratiegegevens worden het schema API-set genoemd. Het schema wordt samengesteld als een eigenschap van het besturingssysteem en de toewijzing tussen API-sets en binaire bestanden kan verschillen, afhankelijk van de binaire bestanden die zijn opgenomen in een bepaald apparaat. Met het schema kan een geïmporteerde functie in één binair bestand correct worden gerouteerd op verschillende apparaten, zelfs als de modulenamen van de binaire host zijn hernoemd of volledig zijn geherstructureerd op verschillende Windows-apparaten.
Windows ondersteunt twee standaardtechnieken voor het verbruik en de interface met API-sets: direct doorsturen en reverse forwarding-.
Direct doorsturen
In deze configuratie importeert de verbruikende code rechtstreeks de naam van een API-setmodule. Deze import wordt in één bewerking opgelost en is de meest efficiënte methode met de minste overhead. Conceptueel gezien kan deze oplossing verwijzen naar verschillende binaire bestanden op verschillende Windows-apparaten, zoals wordt weergegeven in het volgende voorbeeld:
Geïmporteerde API-set: api-feature1-l1-1-0.dll
- Windows-pc ->feature1.dll
- HoloLens ->feature1_holo.dll
- IoT ->feature1_iot.dll
Omdat de toewijzingen worden bewaard in een aangepaste opslagplaats voor schemagegevens, betekent dit dat een API-setnaam die eindigt op .dll niet rechtstreeks naar een bestand op schijf verwijst. Het .dll deel van de naam van de API-set is alleen een conventie die vereist is voor het laadprogramma. De naam van de API-set lijkt meer op een alias of een virtuele naam voor een fysiek DLL-bestand. Dit maakt de naam draagbaar over het hele bereik van Windows-apparaten.
Doorsturen omkeren
Hoewel api-setnamen een stabiele naamruimte bieden voor modules op verschillende apparaten, is het niet altijd praktisch om elk binair bestand te converteren naar dit nieuwe systeem. Een toepassing is bijvoorbeeld al vele jaren in gebruik en het opnieuw compileren van de binaire bestanden van de toepassing is mogelijk niet haalbaar. Bovendien moeten sommige toepassingen mogelijk blijven worden uitgevoerd op systemen die zijn gebouwd voordat specifieke API-sets werden geïntroduceerd.
Voor dit compatibiliteitsniveau wordt een systeem van doorstuurservers geleverd op alle Windows-apparaten die een subset van het Win32 API-oppervlak dekken. Deze doorstuurservers gebruiken de modulenamen die zijn geïntroduceerd op Windows-pc's en maken gebruik van het API Set-systeem om compatibiliteit te bieden op alle Windows-apparaten.
De laadprogrammabewerking gedraagt zich als volgt:
- Op een ander apparaat dan een Windows-pc krijgt het laadprogramma een verouderde afhankelijkheid van de Windows-pc-module die niet aanwezig is op het apparaat.
- Het laadprogramma zoekt een API-doorstuurserver voor deze module en laadt deze in het geheugen.
- De doorstuurserver heeft een toewijzing voor de API-set voor de opgegeven functie die wordt aangeroepen.
- Het laadprogramma zoekt het juiste binaire hostbestand voor het opgegeven apparaat.
Conceptueel ziet de toewijzing er als volgt uit:
Geïmporteerde DLL: feature1.dll
- Windows-pc ->feature1.dll
- HoloLens ->feature1.dll doorstuurserver ->api-feature1-l1-1-0.dll ->feature1_holo.dll
- IoT ->feature1.dll doorstuurserver ->api-feature1-l1-1-0.dll ->feature1_iot.dll
Het eindresultaat is functioneel hetzelfde als direct doorsturen, maar het bereikt dit op een manier die de compatibiliteit van toepassingen maximaliseert.
Notitie
Reverse forwarding biedt alleen dekking voor een subset van het Win32 API-oppervlak. Het staat niet toe dat toepassingen die zijn gericht op bureaubladversies van Windows, worden uitgevoerd op alle Windows-apparaten.