Creating international INF files failed on Windows 10

  driver, windows

I am making some changes based on project sysvad which is from Microsoft, and its github link is: https://github.com/microsoft/Windows-driver-samples/tree/master/audio/sysvad

And we hope the driver to support both English and Chinese, so I am trying to modify its inx file. My main reference link is this Microsoft’s official document: https://docs.microsoft.com/en-us/windows-hardware/drivers/install/creating-international-inf-files

And the changed inx file is partly listed below:

[SourceDisksNames]
; 222="SYSVAD Driver Disk","",222
222="SYSVAD Driver Disk",,,%LocaleSubDir%

[SourceDisksFiles]
LenovoVirtualMic.sys=222

...

[DestinationDirs]
SYSVAD_SA.CopyList=13,%LocaleSubDir% ; 13=Package's DriverStore directory

;======================================================
; SYSVAD_SA
;======================================================
[SYSVAD_SA.CopyList]
LenovoVirtualMic.sys

...

[LVM_ComponentizedVirtualMic_Service_Inst]
DisplayName=%LVM_ComponentizedVirtualMic.SvcDesc%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%13%LenovoVirtualMic.sys

...

[Strings]
...
LocaleSubDir="English"
MicInCustomName= "LVM Mic"

[Strings.0804]
...
LocaleSubDir="Chinese"
MicInCustomName= "虚拟驱动"

And I create the folders named English and Chinese like below:
enter image description here

But when I compile my project, it reports error:
enter image description here

And its detail:

Inf2Cat Tool Output:
............................
Signability test failed.

Errors:
22.9.1: lenovovirtualmic.sys in [sysvad_sa.copylist] of packagecomponentizedvirtualmic.inf is missing or cannot be decompressed from source media.  Please verify all path values specified in SourceDisksNames, SouceDisksFiles, and CopyFiles sections resolve to the actual location of the file, and are expressed in terms relative to the location of the inf.

Warnings:
None

Below is the whole inx file if needed, please check it.

[Version]
Signature="$Windows NT$"
Class=MEDIA
Provider=%ProviderName%
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
DriverVer = 02/22/2016, 1.0.0.1
CatalogFile=sysvad.cat
PnpLockDown = 1

[SourceDisksNames]
; 222="SYSVAD Driver Disk","",222
222="SYSVAD Driver Disk",,,%LocaleSubDir%

[SourceDisksFiles]
LenovoVirtualMic.sys=222

[SignatureAttributes]
LenovoVirtualMic.sys=SignatureAttributes.DRM

[SignatureAttributes.DRM]
DRMLevel=1300

[SignatureAttributes.PETrust]
PETrust=true

[Manufacturer]
%MfgName%=SYSVAD,NT$ARCH$

[SYSVAD.NT$ARCH$]
%SYSVAD_SA.DeviceDesc%=SYSVAD_SA, RootLVM_ComponentizedVirtualMic

[DestinationDirs]
SYSVAD_SA.CopyList=13,%LocaleSubDir% ; 13=Package's DriverStore directory

;======================================================
; SYSVAD_SA
;======================================================
[SYSVAD_SA.CopyList]
LenovoVirtualMic.sys

[SYSVAD_SA.AddReg]
HKR,,AssociatedFilters,,"wdmaud,swmidi,redbook"
HKR,,Driver,,LenovoVirtualMic.sys

;
; For demo only, please review these power management settings for your architecture. 
;
HKR,PowerSettings,SingleComponentMultiFxStates,3,1,0,0,0  ; Turn on multi Fx support.
HKR,PowerSettings,ConservationIdleTime,3,3,0,0,0          ; 3 seconds for idle power management when on battery
HKR,PowerSettings,PerformanceIdleTime,3,3,0,0,0           ; 3 seconds for idle power management when on AC power
HKR,PowerSettings,IdlePowerState,3,3,0,0,0                ; go to D3 for idle power management

HKR,Drivers,SubClasses,,"wave,midi,mixer"

HKR,Driverswavewdmaud.drv,Driver,,wdmaud.drv
HKR,Driversmidiwdmaud.drv,Driver,,wdmaud.drv
HKR,Driversmixerwdmaud.drv,Driver,,wdmaud.drv

HKR,Driverswavewdmaud.drv,Description,,%SYSVAD_SA.DeviceDesc%
;; HKR,Driversmidiwdmaud.drv,Description,,%SYSVAD_MIDI%
HKR,Driversmixerwdmaud.drv,Description,,%SYSVAD_SA.DeviceDesc%

HKR,%MEDIA_CATEGORIES%%MicInCustomNameGUID%,Name,,%MicInCustomName%


;======================================================
; capture interfaces: mic in (external: headphone)
;======================================================
[SYSVAD.I.WaveMicIn]
AddReg=SYSVAD.I.WaveMicIn.AddReg
[SYSVAD.I.WaveMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
;; HKR,,FriendlyName,,%SYSVAD.WaveMicIn.szPname%

[SYSVAD.I.TopologyMicIn]
AddReg=SYSVAD.I.TopologyMicIn.AddReg
[SYSVAD.I.TopologyMicIn.AddReg]
HKR,,CLSID,,%Proxy.CLSID%
;; HKR,,FriendlyName,,%SYSVAD.TopologyMicIn.szPname%
; The following lines opt-in to pull mode.
HKR,EP{$content},%PKEY_AudioEndpoint_Association%,,%KSNODETYPE_ANY%
HKR,EP{$content},%PKEY_AudioEndpoint_Supports_EventDriven_Mode%,0x00010001,0x1

;======================================================
; SYSVAD_SA
;======================================================
[SYSVAD_SA.NT]
Include=ks.inf,wdmaudio.inf
Needs=KS.Registration, WDMAUDIO.Registration, MsApoFxProxy.Registration
CopyFiles=SYSVAD_SA.CopyList
AddReg=SYSVAD_SA.AddReg

[SYSVAD_SA.NT.Interfaces]

;
; Interfaces for microphone (external: headphone) capture endpoint 
;
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_REALTIME%, %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_CAPTURE%,  %KSNAME_WaveMicIn%, SYSVAD.I.WaveMicIn
AddInterface=%KSCATEGORY_AUDIO%,    %KSNAME_TopologyMicIn%, SYSVAD.I.TopologyMicIn
AddInterface=%KSCATEGORY_TOPOLOGY%, %KSNAME_TopologyMicIn%, SYSVAD.I.TopologyMicIn

[SYSVAD_SA.NT.Services]
AddService=LVM_ComponentizedVirtualMic,0x00000002,LVM_ComponentizedVirtualMic_Service_Inst

[LVM_ComponentizedVirtualMic_Service_Inst]
DisplayName=%LVM_ComponentizedVirtualMic.SvcDesc%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%13%LenovoVirtualMic.sys

[SYSVAD_SA.NT.HW]
AddReg = AUDIOHW.AddReg

[AUDIOHW.AddReg]
; FILE_DEVICE_SOUND
HKR,,DeviceType,0x10001,0x0000001D
; SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RWX_RES_RWX
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GRGWGX;;;BA)(A;;GRGWGX;;;WD)(A;;GRGWGX;;;RC)"


;======================================================
; WDF
;======================================================
[SYSVAD_SA.NT.Wdf]
KmdfService = LVM_ComponentizedVirtualMic, SYSVAD_SA_WdfSect
[SYSVAD_SA_WdfSect]
KmdfLibraryVersion = $KMDFVERSION$

;======================================================
; COMMON
;======================================================
[Strings]

;Non-localizable

KSNAME_WaveSpeaker="WaveSpeaker"
KSNAME_TopologySpeaker="TopologySpeaker"


KSNAME_WaveSpeakerHeadphone="WaveSpeakerHeadphone"
KSNAME_TopologySpeakerHeadphone="TopologySpeakerHeadphone"

KSNAME_WaveMicIn="WaveMicIn"
KSNAME_TopologyMicIn="TopologyMicIn"

Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_REALTIME ="{EB115FFC-10C8-4964-831D-6DCB02E6F23F}"
KSCATEGORY_TOPOLOGY = "{DDA54A40-1E4C-11D1-A050-405705C10000}"

KSNODETYPE_ANY   = "{00000000-0000-0000-0000-000000000000}"

PKEY_AudioEndpoint_Association               = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioEndpoint_Supports_EventDriven_Mode = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},7"
;PKEY_AudioEndpoint_Default_VolumeInDb        = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},9"

PKEY_FX_Association         = "{D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},0"
PKEY_FX_EndpointEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},7"
PKEY_FX_KeywordDetector_ModeEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},9"

; Driver developers would replace these CLSIDs with those of their own APOs
FX_DISCOVER_EFFECTS_APO_CLSID  = "{889C03C8-ABAD-4004-BF0A-BC7BB825E166}"


MEDIA_CATEGORIES = "MediaCategories"
MicInCustomNameGUID = {d48deb08-fd1c-4d1e-b821-9064d49ae96e}

; Driver developers would replace this CLSID with their own keyword detector OEM adapter
KEYWORDDETECTORCONTOSOADAPTER_CLSID = {6F7DBCC1-202E-498D-99C5-61C36C4EB2DC}
KEYWORDDETECTORCONTOSOADAPTER_CLSID2 = {207F3D0C-5C79-496F-A94C-D3D2934DBFA9}

;Localizable

ProviderName = "Lenovo Co."
MfgName      = "Lenovo"
MsCopyRight  = "Lenovo Copyright"


SYSVAD_SA.DeviceDesc="Lenovo Voice"
LVM_ComponentizedVirtualMic.SvcDesc="Lenovo Virtual Mic Driver"

;; friendly names
SYSVAD.WaveMicIn.szPname="Lenovo Virtual Mic (WaveIn)"
SYSVAD.TopologyMicIn.szPname="Lenovo Virtual Mic (Topology)"

LocaleSubDir="English"
MicInCustomName= "LVM Mic"

[Strings.0804]
;Non-localizable

KSNAME_WaveSpeaker="WaveSpeaker"
KSNAME_TopologySpeaker="TopologySpeaker"


KSNAME_WaveSpeakerHeadphone="WaveSpeakerHeadphone"
KSNAME_TopologySpeakerHeadphone="TopologySpeakerHeadphone"

KSNAME_WaveMicIn="WaveMicIn"
KSNAME_TopologyMicIn="TopologyMicIn"

Proxy.CLSID="{17CCA71B-ECD7-11D0-B908-00A0C9223196}"
KSCATEGORY_AUDIO="{6994AD04-93EF-11D0-A3CC-00A0C9223196}"
KSCATEGORY_RENDER="{65E8773E-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_CAPTURE="{65E8773D-8F56-11D0-A3B9-00A0C9223196}"
KSCATEGORY_REALTIME ="{EB115FFC-10C8-4964-831D-6DCB02E6F23F}"
KSCATEGORY_TOPOLOGY = "{DDA54A40-1E4C-11D1-A050-405705C10000}"

KSNODETYPE_ANY   = "{00000000-0000-0000-0000-000000000000}"

PKEY_AudioEndpoint_Association               = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},2"
PKEY_AudioEndpoint_Supports_EventDriven_Mode = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},7"
;PKEY_AudioEndpoint_Default_VolumeInDb        = "{1DA5D803-D492-4EDD-8C23-E0C0FFEE7F0E},9"

PKEY_FX_Association         = "{D04E05A6-594B-4FB6-A80D-01AF5EED7D1D},0"
PKEY_FX_EndpointEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},7"
PKEY_FX_KeywordDetector_ModeEffectClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},9"

; Driver developers would replace these CLSIDs with those of their own APOs
FX_DISCOVER_EFFECTS_APO_CLSID  = "{889C03C8-ABAD-4004-BF0A-BC7BB825E166}"


MEDIA_CATEGORIES = "MediaCategories"
MicInCustomNameGUID = {d48deb08-fd1c-4d1e-b821-9064d49ae96e}

; Driver developers would replace this CLSID with their own keyword detector OEM adapter
KEYWORDDETECTORCONTOSOADAPTER_CLSID = {6F7DBCC1-202E-498D-99C5-61C36C4EB2DC}
KEYWORDDETECTORCONTOSOADAPTER_CLSID2 = {207F3D0C-5C79-496F-A94C-D3D2934DBFA9}

;Localizable

ProviderName = "Lenovo Co."
MfgName      = "Lenovo"
MsCopyRight  = "Lenovo Copyright"


SYSVAD_SA.DeviceDesc="Lenovo Voice"
LVM_ComponentizedVirtualMic.SvcDesc="Lenovo Virtual Mic Driver"

;; friendly names
SYSVAD.WaveMicIn.szPname="Lenovo Virtual Mic (WaveIn)"
SYSVAD.TopologyMicIn.szPname="Lenovo Virtual Mic (Topology)"

LocaleSubDir="Chinese"
MicInCustomName= "虚拟驱动"

Source: Windows Questions

LEAVE A COMMENT