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.
Hiermee maakt u een resource-indexeerfunctie waarmee PRI-bestanden kunnen worden gemaakt die compatibel zijn met bestaande PRI-bestanden. Deze functie is alleen nodig in redelijk beperkte scenario's; zie Opmerkingen voor meer informatie.
COM moet worden geïnitialiseerd (bijvoorbeeld door CoInitializeEx aan te roepen) voordat u deze functie gebruikt.
Syntaxis
HRESULT HRESULT MrmCreateResourceIndexerFromPreviousSchemaFile(
_In_ PCWSTR projectRoot,
_In_ MrmPlatformVersion platformVersion,
_In_opt_ PCWSTR defaultQualifiers,
_In_ PCWSTR schemaFile,
_Inout_ MrmResourceIndexerHandle *indexer
);
Parameterwaarden
-
projectRoot [in]
-
Type: PCWSTR
De hoofdmap waaruit sommige bestandspaden worden berekend. Dit is meestal de hoofdmap van uw bronproject, maar kan verschillen. Zie Bestandsresources in MRM voor meer informatie.
-
platformVersion [in]
-
Type: MrmPlatformVersion
De platformversie (targetOsVersion) die moet worden gebruikt voor het gegenereerde configuratiebestand. De meeste bellers moeten alleen MrmPlatformVersion_Windows10_0_0_5 gebruiken
-
defaultQualifiers [in, optioneel]
-
Type: PCWSTR
Een lijst met standaardresourcekwalificaties. Bijvoorbeeld 'language-en-US_scale-100'. Zie Kwalificatie in MRM voor meer informatie over kwalificaties.
-
schemaFile [in]
-
Type: PCWSTR
Het pad naar een bestaand PRI-bestand waarvan het schema moet overeenkomen, of het pad naar een XML-dump met het schema van het PRI-bestand dat moet overeenkomen. Zie MrmDumpPriFile voor informatie over het maken van een XML-dump.
-
indexeerfunctie [in, uit]
-
Type: MrmResourceIndexerHandle*
Een aanwijzer naar een bronindexeergreep. Bij geslaagde terugkeer bevat dit een ingang voor een resource-indexeerfunctie. U moet de indexeerfunctie vrij maken via MrmDestroyIndexerAndMessages nadat u deze hebt gebruikt.
Retourwaarde
Type: HRESULT
S_OK als de functie is geslaagd, anders een andere waarde. Gebruik de geslaagde of mislukte macro's (gedefinieerd in winerror.h) om te bepalen of de geslaagde of mislukte macro's zijn geslaagd.
Opmerkingen
Deze functie komt overeen met MrmCreateResourceIndexer , behalve dat de indexeerfunctie PRI-bestanden maakt die gegarandeerd alle resourcenamen en indexen van het opgegeven schemaFile bevatten, naast eventuele nieuwe resources die aan de indexeerfunctie zijn toegevoegd. Dit zorgt ervoor dat het nieuwe PRI-bestand 'schema-compatibel' is met het oorspronkelijke schemaFile, zelfs als sommige resources zijn weggelaten.
Voor de meest voorkomende scenario's is deze functie niet nodig. Als een van de volgende opties van toepassing is, hoeft u zich geen zorgen te maken over het bouwen van PRI-bestanden die compatibel zijn met schema's:
- U gebruikt één zelfstandig PRI-bestand (dit is de enige ondersteunde optie voor uitgepakte apps); Of
- U bouwt uw resourcepack-PULL's altijd opnieuw op bij het opnieuw opbouwen van uw belangrijkste PRI.
Deze functie is alleen nodig in een redelijk beperkt scenario, namelijk:
- U hebt een pri-hoofdbestand en een of meer PRI-bestanden van het resourcepack; En
- U bouwt het hoofd-PRI-bestand opnieuw (maar niet de PRI-bestanden van het resourcepack); En
- U verwijdert (of mogelijk) een of meer resources uit het hoofd-PRI-bestand.
In dit geval zorgt het instellen van de schemaFile-verwijzing naar het oorspronkelijke PRI-hoofdbestand ervoor dat het nieuwe hoofd-PRI-bestand compatibel is met de bestaande resourcepakketten door ervoor te zorgen dat er tijdelijke indexwaarden voor de verwijderde resources zijn.
Opmerking: het nieuwe PRI-bestand bevat alle resourcenamen (en indexen) uit het oorspronkelijke bestand, maar bevat alleen waarden voor de resources die expliciet aan de indexeerfunctie zijn toegevoegd. Het nieuwe bestand neemt de waarden van het oorspronkelijke PRI-bestand niet over (kopieert).
Voorbeeld
Stel dat het PRI-bestand 'original.pri' drie resources voor het Engels bevat:
| Naam | Index | Waarde |
|---|---|---|
| ms-resource:///strings/test | 0 | "TestValue" |
| ms-resource:///strings/save | 1 | "Opslaan" |
| ms-resource:///strings/delete | 2 | "Verwijderen" |
Overweeg nu het volgende codefragment (foutcontrole weggelaten):
// Create an indexer with the existing schema
MrmResourceIndexerHandle indexer{};
MrmCreateResourceIndexerFromPreviousSchemaFile(L"C:\\MyProject", MrmPlatformVersion_Windows10_0_0_5, L"language-en", L"original.pri", &indexer);
// Add values for "save" and "delete".
// Note that there is no "test" resource added, since we don't need it anymore.
MrmIndexString(indexer, L"ms-resource:///strings/save", L"Save", L"language-en");
MrmIndexString(indexer, L"ms-resource:///strings/delete", L"Delete", L"language-en");
// Save the file
MrmCreateResourceFile(indexer, MrmPackagingModeStandaloneFile, MrmPackagingOptionsNone, L"C:\\");
Het nieuwe resourcebestand bevat het volgende voor engels:
| Naam | Index | Waarde |
|---|---|---|
| ms-resource:///strings/test | 0 | <geen> |
| ms-resource:///strings/save | 1 | "Opslaan" |
| ms-resource:///strings/delete | 2 | "Verwijderen" |
Dit zorgt ervoor dat de resourceindexen voor save respectievelijk delete 1 en 2 hetzelfde blijven, zodat resourcepakketten met gelokaliseerde versies van 'Opslaan' en 'Verwijderen' overeenkomen. Als de toepassingscode nog steeds probeert de test resource te laden, mislukt deze tijdens runtime (ten minste in het Engels) omdat er geen kandidaten zijn gedefinieerd.
Laten we eens kijken waarom dit belangrijk is als het nieuwe PRI-bestand niet is gemaakt met het basisschema. In dat geval bevat het nieuwe PRI-bestand het volgende:
| Naam | Index | Waarde |
|---|---|---|
| ms-resource:///strings/save | 0 | "Opslaan" |
| ms-resource:///strings/delete | 1 | "Verwijderen" |
Zoekacties voor delete (index 1) halen nu de juiste tekenreeks 'Verwijderen' op in het Engels, maar in andere talen wordt de gelokaliseerde versie van 'Opslaan' opgehaald (omdat index 1 de index voor de save resource was). Dit zou ertoe leiden dat gebruikers UX zien met het label Opslaan (in hun lokale taal) dat daadwerkelijk een verwijderbewerking heeft uitgevoerd- een ernstige fout.
Requirements
| Requirement | Waarde |
|---|---|
| Minimaal ondersteunde client |
Windows 10 versie 1803 [alleen desktop-apps] |
| Minimaal ondersteunde server |
Windows Server [alleen desktop-apps] |
| Koptekst |
|
| Bibliotheek |
|
| DLL |
|