Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az 1330-ás infVerif hiba segít megelőzni azt a funkcionális hibát, amely esetén egy célfájlt több forrásfájl felülír. Például:
[CopyFiles.A]
DesiredFileName1,SourceFile1A ; Used by DDInstallSection A
[CopyFiles.B]
DesiredFileName1,SourceFile1B ; Used by DDInstallSection B
Ha több DDInstall-szakasz más-más forrásfájlokat másol egyetlen célfájlba a CopyFiles direktíva használatával, ezek a CopyFile-fájlok ütközhetnek, ha a DDInstall-szakaszok mindegyike ugyanazon a rendszeren lesz feldolgozva. Ilyen például, ha két különböző eszköz ugyanazt az illesztőprogramot használja, de különböző telepítési szakaszokat, vagy valamilyen offline illesztőprogram-képalkotó és üzembe helyezési forgatókönyvben. Mivel a különböző DDInstall szakaszokból több forrásfájl is ugyanarra a célfájlra lesz másolva, a különböző DDInstall-szakaszok különböző forrásfájljai felülírják egymást, így az utolsó másolt fájl a célhelyre kerül, ami nem feltétlenül a várt eredmény.
Esetekben
Ez a dokumentum útmutatást nyújt a régi szintaxis olyan metódusokra való frissítéséhez, amelyek eltávolítják a működési hibát az alábbi esetekben. Nem minden eset szerepel az alábbiakban, mivel az egyes INF-ekre vonatkozó egyéb okok is lehetnek.
A különböző DDInstall-szakaszok átneveznek egy szolgáltatás bináris fájlját egy adott szolgáltatáshoz
A különböző DDInstall-szakaszok átneveznek egy forrásfájlt, hogy átmásolják az illesztőprogram vagy egy felhasználói módú alkalmazás által elért célfájl-helyre
Különböző DDInstall-szakaszok átnevezik egy szolgáltatás binárisát egyetlen szolgáltatás számára.
Az alábbi kód egy példa arra, hogy a különböző DDInstall-szakaszok hogyan nevezhetnek át egy szolgáltatás bináris fájlját egy szolgáltatáshoz:
[DDInstallSection_A]
CopyFiles = CopyFiles.A
[DDInstallSection_B]
CopyFiles = CopyFiles.B
[CopyFiles.A]
ServiceBinaryFile, ServiceBinaryA
[CopyFiles.B]
ServiceBinaryFile, ServiceBinaryB
[DDInstallSection_A.Services]
AddService = ServiceName, 0x00000002, ServiceName_Install
[DDInstallSection_B.Services]
AddService = ServiceName, 0x00000002, ServiceName_Install
[ServiceName_Install]
ServiceType = 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\ServiceBinaryFile
A kód frissítéséhez hozzon létre különböző szolgáltatásneveket a különböző bináris fájlokhoz:
[DDInstallSection_A]
CopyFiles = CopyFiles.A
[DDInstallSection_B]
CopyFiles = CopyFiles.B
[CopyFiles.A]
ServiceBinaryA
[CopyFiles.B]
ServiceBinaryB
[DDInstallSection_A.Services]
AddService = ServiceName1, 0x00000002, ServiceName1_Install
[DDInstallSection_B.Services]
AddService = ServiceName2, 0x00000002, ServiceName2_Install
[ServiceName1_Install]
ServiceType = 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\ServiceBinaryA
[ServiceName2_Install]
ServiceType = 1
StartType = 3
ErrorControl = 0
ServiceBinary = %12%\ServiceBinaryB
A különböző DDInstall-szakaszok átneveznek egy forrásfájlt, hogy átmásolják az illesztőprogram vagy egy felhasználói módú alkalmazás által elért célfájl-helyre
Ebben az esetben az illesztőprogram egy rögzített fájlhelyhez fér hozzá, amelyet dinamikus fájlhelyként használnak. Ha egy olyan dinamikus változót szeretne használni, amely több forrásfájlt követ nyomon, egy AddReg HKR-bejegyzéssel tárolhatja a futásidőben lekérhető elérési utat. Ez azért működik, mert az AddReg HKR-bejegyzések az eszközhöz képest vannak tárolva.
Az AddReg HKR bejegyzés a forrásfájlok fájlhelyeit adja meg ahelyett, hogy egyetlen célfájlt választanak a forrásfájlok másolásához:
[A.AddReg]
HKR,, FileName1Path, "%13%\SourceFile1A"
[B.AddReg]
HKR,, FileName1Path, "%13%\SourceFile1B"
Rögzített fájlhely elérése helyett a célfájl helye lekérhető az eszköz egyik beállításából. A célfájl helyét az INF tárolja egy beállításjegyzék-értékben, és az illesztőprogram API-hívásain keresztül kéri le.
Az értékek INF-en keresztüli előírásához használja az INF AddReg-direktívát, amely reg-root bejegyzéseket tartalmaz egy bejegyzés hozzáadási szakaszból, amelyre egy INF DDInstall szakaszból vagy INF DDInstall.HW szakaszból hivatkoznak.
Mivel a beállításjegyzék értékei egyetlen célfájl helye helyett nyomon követik a célfájlt, az illesztőprogramnak másként kell hozzáférnie ezekhez a fájlokhoz. A célfájl eléréséhez az illesztőnek be kell hívnia az alábbi API-k egyikét a beállításjegyzék értékének megnyitásához, és vissza kell adnia a forrásfájl helyét:
WDM
WDF
Egyéb felhasználói mód kódja
Megjegyzés:
Ebben a példában az INF-payloadok által meghatározott fájlok célhelye nincs hatással a megoldásra. Az ajánlott eljárások használatához azonban a példa a DIRID 13-at használja, mivel gyorsabb telepítést biztosít kevesebb fájlmásolaton keresztül. További információt a "DIRID-k használata" és a "Futtatás az illesztőprogram-tárolóból" című témakörben talál.
Az alábbi példakód bemutatja, hogyan frissíthet egy régi szintaxist használó INF-t.
Az egy célfájlra leképezett különböző forrásfájlok részletei
| Forráskód | Megjegyzés |
|---|---|
[DestinationDirs] CopyFiles.A = 12 CopyFiles.B = 12 |
Válassza ki a fájlok helyét manuálisan |
[CopyFiles.A] DesiredFileName1,SourceFile1A ; HW Version A DesiredFileName2,SourceFile2A ; HW Version A |
Fájlmásolási technika: Fájlok átnevezése, így a telepített DDInstall-szakasz kiválasztja a forrásfájlt a célfájl elérési útjára való másoláshoz, amelyhez az illesztőprogram kapcsolódik. Ez nem működik abban az esetben, ha az összes DDInstall-szakasz összes fájlját átmásolja a rendszer a telepítés előtt. |
Az AddReg HKR-bejegyzések használatával történő frissítés részletei
| Forráskód | Megjegyzés |
|---|---|
[DestinationDirs] CopyFiles.A = 13 CopyFiles.B = 13 |
Ajánlott eljárás az illesztőprogram-tároló könyvtárában (Dirid 13) hagyni mindent |
[DDInstallSection_A] CopyFiles = CopyFiles.A |
Adjon hozzá egy AddReg szakaszt minden DDInstall Section.HW-hez, hogy nyomon kövesse a telepítéshez szükséges fájlokat. |
[A.AddReg] HKR,, FileName1Path, "%13%\SourceFile1A" HKR,, FileName2Path, "%13%\SourceFile2A" |
Több forrásfájl-helyet vetítenek egyetlen beállításjegyzék értékre. Ez azért működik, mert a DDInstall vagy DDInstall.HW szakaszból származó HKR AddReg az eszközbeállításokban vannak tárolva. Ha egy eszköz telepítve van ezzel az illesztőprogram-csomaggal, az csak a DDInstall szakasz egyikét fogja használni, így csak a HKR AddReg egyikét fogja használni, és nem lesz ütközés. |
[CopyFiles.A] SourceFile1A ; HW Version A SourceFile2A ; HW Version A |
Minden fájl a saját helyére van leképezve, így nincs működési hiba, és az INF sikeresen teljesíti az InfVerifet. Ne használja a CopyFilest olyan fájl átnevezésére, amelyhez a DestinationDirs tartalmazza a Dirid 13-at. |
A fájl helyének elérése az illesztőprogramból (pszeudokód)
Before (Fixed Filename):
OpenFile(Path\DesiredFileName1)
After (Dynamic Filename):
OpenDeviceRegistryKey(Device, &KeyHandle)
RegistryKeyQueryValue(KeyHandle, FileNamePath1, &SourceFile)
OpenFile(SourceFile)
A fájl helyének elérése felhasználói módban
Ha a célfájlt felhasználói módban éri el, nem lesz meg az az eszköz kontextus, ami az illesztőprogram rendelkezésére áll. Ebben az esetben egy további lépést kell hozzáadnia. A kulcsfogópont megnyitása előtt keresse meg azt az eszközt, amely a betöltendő fájlt jelző beállításjegyzék-értéket tartalmazza.
Az ajánlott eljárásokért tekintse meg a Futtatás az illesztőprogram-tárolóból című témakört, amelyből megtudhatja, hogyan szűrhet egy eszközlistát az eszköz megkeresésére, és hogyan nyithatja meg a leírót a beállításjegyzék helyére felhasználói módban a Dirid 13 használatával.
1331– 1333-ás hibák
Az 1331–1333-as hiba mind ugyanaz a probléma, de a regisztrációs értékekhez, a szolgáltatásokon belüli beállításjegyzék-értékekhez és a szolgáltatásokhoz kapcsolódik. A dokumentáció 1330-ra vonatkozó példái az 1331–1333-ás hibák elhárítására szolgáló technikákat ismertetik.