Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
InfVerif Hatası 1330, birden çok kaynak dosya tarafından bir hedef dosyanın üzerine yazıldığı işlevsel bir hatayı önlemeye yardımcı olur. Örneğin:
[CopyFiles.A]
DesiredFileName1,SourceFile1A ; Used by DDInstallSection A
[CopyFiles.B]
DesiredFileName1,SourceFile1B ; Used by DDInstallSection B
Birden çok DDInstall bölümüCopyFiles yönergesini kullanarak farklı kaynak dosyaları tek bir hedef dosyaya kopyaladığında, DDInstall bölümlerinin tümü aynı sistemde işlenirse bu CopyFile'lar çakışabilir. Bunun örnekleri, iki farklı cihazın aynı sürücüyü ama farklı yükleme bölümlerini veya bazı çevrimdışı sürücü görüntüleme ve dağıtım senaryolarında kullanmalarıdır. Farklı DDInstall bölümlerindeki birden çok kaynak dosya aynı tam tek hedef dosyaya kopyalandığından, farklı DDInstall bölümlerindeki farklı kaynak dosyalar birbirinin üzerine yazılır, böylece kopyalanan son dosya hedefe yerleştirilen dosya olur ve bu beklenen sonuçlar olmayabilir.
Servis Talepleri
Bu belgede, aşağıdaki durumlar için işlevsel hatayı kaldıran yöntemlere eski söz diziminin nasıl güncelleştirildiğini gösteren yönergeler sağlanır. Her INF'ye özgü başka nedenler olabileceği için tüm durumlar aşağıda listelenmez.
Farklı DDInstall bölümleri, bir hizmete ait ikili dosyayı yeniden adlandırma
Farklı DDInstall bölümleri , kaynak dosyayı yeniden adlandırarak sürücü veya Kullanıcı Modu uygulaması tarafından erişilen hedef dosya konumuna kopyalanır
Farklı DDInstall bölümleri bir hizmet için hizmet ikili dosyasını yeniden adlandırıyor.
Aşağıdaki kod, farklı DDInstall bölümlerinin bir hizmet için hizmet ikili dosyasını nasıl yeniden adlandırabileceğini gösteren bir örnektir:
[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
Bu kodu güncelleştirmek için farklı ikili dosyalar için farklı hizmet adları oluşturun:
[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
Farklı DDInstall bölümleri , kaynak dosyayı yeniden adlandırarak sürücü veya Kullanıcı Modu uygulaması tarafından erişilen hedef dosya konumuna kopyalanır
Bu durumda, sürücü dinamik dosya konumu olarak kullanılan sabit bir dosya konumuna erişiyor. Birden çok kaynak dosyayı izleyen dinamik bir değişkene sahip olmak için, çalışma zamanında alınabilecek yolu depolamak üzere bir AddReg HKR girdisi kullanabilirsiniz. AddReg HKR girişleri bir cihaza göre depolandığından bu işe yarar.
AddReg HKR girdisi, kaynak dosyaları kopyalamak üzere tek bir hedef dosya seçmek yerine kaynak dosyaların dosya konumlarını belirtir:
[A.AddReg]
HKR,, FileName1Path, "%13%\SourceFile1A"
[B.AddReg]
HKR,, FileName1Path, "%13%\SourceFile1B"
Sabit bir dosya konumuna erişmek yerine hedef dosyanın konumu cihazdaki bir ayardan alınabilir. Hedef dosya konumu, INF tarafından bir kayıt defteri değerinde depolanır ve sürücüdeki API çağrıları aracılığıyla alınır.
Değerleri bir INF aracılığıyla sağlamak için, bir INF AddReg yönergesini, INF DDInstall bölümünden veya INF DDInstall.HW bölümünden başvurulan add-registry-section içindeki HKR kayıt defteri kök girdilerini kullanarak kullanın.
Kayıt defteri değerleri tek bir hedef dosya konumu yerine hedef dosyayı takip ettiğinden, sürücünün bu dosyalara farklı şekilde erişmesi gerekir. Hedef dosyaya erişmek için, sürücünün şimdi kayıt defteri değerini açmak ve bu kaynak dosyanın konumunu döndürmesini sağlamak için aşağıdaki API'lerden birini çağırması gerekir:
WDM
WDF
Diğer Kullanıcı Modu kodu
Uyarı
Bu örnekte, INF yükleri için dosyaların hedef konumu çözümü etkilemez. Ancak en iyi yöntemleri kullanmak için örnek, daha az dosya kopyası aracılığıyla daha hızlı yükleme sağladığından DIRID 13 kullanır. Daha fazla bilgi için lütfen "DIRİD kullanma" ve "Sürücü deposundan çalıştırma" konularına bakın.
Aşağıdaki örnek kod, eski söz dizimini kullanan bir INF'nin nasıl güncelleştirildiğini gösterir.
Bir hedef dosyaya eşlenen farklı kaynak dosyalarının ayrıntıları
| Kaynak kodu | Yorum |
|---|---|
[DestinationDirs] CopyFiles.A = 12 CopyFiles.B = 12 |
Dosyaların nereye gideceğini el ile seçin |
[CopyFiles.A] DesiredFileName1,SourceFile1A ; HW Version A DesiredFileName2,SourceFile2A ; HW Version A |
Dosya kopyalama tekniği: DDInstall Bölümünün yüklenmesi için dosyaları yeniden adlandırmak, sürücünün bağlı olduğu hedef dosya yoluna kopyalanacak kaynak dosyayı seçer. Bu, yüklemeden önce tüm DDInstall Bölümleri için tüm dosyaların kopyalanmış olması durumunda çalışmaz. |
AddReg HKR girdilerini kullanarak güncelleme ayrıntıları
| Kaynak kodu | Yorum |
|---|---|
[DestinationDirs] CopyFiles.A = 13 CopyFiles.B = 13 |
En iyi yöntem, her şeyi sürücü deposu dizininde bırakmaktır (Dirid 13) |
[DDInstallSection_A] CopyFiles = CopyFiles.A |
Bu yükleme için gereken dosyaları izlemek için her DDInstall Section.HW için bir AddReg bölümü ekleyin. |
[A.AddReg] HKR,, FileName1Path, "%13%\SourceFile1A" HKR,, FileName2Path, "%13%\SourceFile2A" |
Bir kayıt defteri değerine eşlenmiş birden çok kaynak dosya konumu. DDInstall veya DDInstall.HW bölümünden gelen HKR AddReg'ler cihaz ayarlarında depolandığı için bu şekilde çalışır. Bir cihaz bu sürücü paketiyle yüklendiğinde, yalnızca DDInstall bölümlerinden birini kullanır, bu nedenle HKR AddReg'in yalnızca biri kullanılır ve çakışma olmaz. |
[CopyFiles.A] SourceFile1A ; HW Version A SourceFile2A ; HW Version A |
Tüm dosyalar kendi konumlarına eşlenir, böylece işlev hatası olmaz ve INF InfVerif'ten geçer. DestinationDirs'te Dirid 13 bulunan bir dosyayı yeniden adlandırmak için CopyFiles kullanmayın. |
Sürücüden dosya konumuna erişme (sahte kod)
Before (Fixed Filename):
OpenFile(Path\DesiredFileName1)
After (Dynamic Filename):
OpenDeviceRegistryKey(Device, &KeyHandle)
RegistryKeyQueryValue(KeyHandle, FileNamePath1, &SourceFile)
OpenFile(SourceFile)
Kullanıcı Modundan dosya konumuna erişme
Kullanıcı Modundan hedef dosyaya erişirken, sürücüye ait olan cihaz bağlamına sahip olmazsınız. Bu durumda ek bir adım eklemeniz gerekir. Anahtar tutamacını açmadan önce, hangi dosyanın yükleneceğini belirten kayıt defteri değerini içeren cihazı bulun.
En iyi yöntemler için dirid 13 kullanarak cihazınızı bulmak ve kayıt defteri konumunun tutamacını kullanıcı modunda açmak için cihaz listesini filtrelemeyi öğrenmek için sürücü deposundan çalıştırma bölümüne bakın.
Hatalar 1331 - 1333
1331 - 1333 hataları aynı sorundur ancak sırasıyla kayıt değerleri, hizmetler içindeki kayıt defteri değerleri ve hizmetlerle ilişkilidir. 1330 hatasının belgelerindeki örnekler, 1331 - 1333 hatalarını düzeltme tekniklerini kapsar.