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.
In dit artikel worden de registerwaarden beschreven die door een WDF-stuurprogramma kunnen worden ingesteld. Dit geldt voor KMDF-stuurprogramma's en UMDF-stuurprogramma's die beginnen met UMDF versie 2.
Tenzij anders is opgegeven in de onderstaande secties, bevinden de volgende registerwaarden zich onder de subsleutel van Parameters\Wdf
een stuurprogramma.
- Voor een KMDF-stuurprogramma bevindt deze subsleutel zich onder
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
de servicenaam van het stuurprogramma. - Voor een UMDF-stuurprogramma bevindt deze subsleutel zich onder
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services
de servicenaam van het stuurprogramma.
De subsleutel voor het stuurprogramma gebruikt altijd de servicenaam van het stuurprogramma, zelfs als de bestandsnaam van het binaire stuurprogramma verschilt van de servicenaam.
DbgBreakOnError
REG_DWORD
Als dit op een andere waarde dan nul is ingesteld, wordt het framework in de debugger geopend wanneer een stuurprogramma WdfVerifierDbgBreakPoint aanroept. (Als de VerifierOn-waarde is ingesteld, wordt het framework opgesplitst in het foutopsporingsprogramma, zelfs als de waarde DbgBreakOnError niet bestaat.) Zie het codevoorbeeld in de sectie VerifierOn .
DbgPrintOn
REG_DWORD
- Voor een KMDF-stuurprogramma stelt u deze waarde in onder de
HKLM\SYSTEM\CurrentControlSet\Control\Wdf\Kmdf\Diagnostics
registersleutel. - Voor een UMDF-stuurprogramma stelt u deze waarde in onder de
HKLM\System\CurrentControlSet\Control\Wdf\Umdf\Diagnostics
registersleutel.
Het stuurprogramma moet mogelijk de optionele subsleutel Diagnostics maken.
Als dit is ingesteld op een niet-nulwaarde, verzendt het frameworkslaadprogramma verschillende berichten naar het kernelfoutopsporingsprogramma terwijl het een stuurprogramma laadt en deze aan een versie van de frameworkbibliotheek koppelt, of wanneer een stuurprogramma wordt verwijderd.
DbgWaitForSignalTimeoutInSec
REG_DWORD, frameworkversie 1.11 en hoger
Vanaf Windows 8, wanneer VerifierOn en DbgBreakOnError zijn ingesteld op niet-nulwaarden, kan het stuurprogramma de standaardtime-outperiode voor het inbreken in het foutopsporingsprogramma wijzigen door Het instellen van DbgWaitForSignalTimeoutInSec.
DebugModeBinaries
REG_MULTI_SZ, UMDF-alleen
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode
.
Met deze waarde worden de namen opgegeven van de binaire stuurprogrammabestanden die moeten worden geladen in de foutopsporingsmodus. Als u de foutopsporingsmodus wilt inschakelen voor binaire stuurprogrammabestanden X.DLL, Y.DLL en Z.DLL, wordt deze waarde bijvoorbeeld ingesteld X.DLL\0Y.DLL\0Z.DLL\0\0
op .
DebugModusVlaggen
REG_DWORD, alleen UMDF
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\DebugMode
.
Waarde | Beschrijving |
---|---|
0x01 | Schakel de foutopsporingsmodus in. Met deze instelling wordt de functionaliteit voor automatisch opnieuw opstarten uitgeschakeld die wordt beschreven in Apparaatgroepering gebruiken in UMDF-stuurprogramma's. |
0x02 | Apparaatgroepering uitschakelen. Zie Apparaatgroepering gebruiken in UMDF-stuurprogramma's voor meer informatie over het groeperen van apparaten. |
0x04 | Time-outs uitschakelen. |
Wanneer u de F5-optie in Microsoft Visual Studio gebruikt, worden alle drie de vlaggen ingesteld voor het geïmplementeerde stuurprogramma.
Verbeterde Verificatieopties
REG_DWORD, frameworkversie 1.9 en hoger
Deze waarde bevat een bitmap. Elke bit vertegenwoordigt een extra verifier-optie die gebruikers kunnen inschakelen door de bit in te stellen.
Bitwaarden:
0x1: Als deze optie is ingesteld, controleert de verifier of elk van de callback-functies van het stuurprogramma het volgende doet:
Keert terug naar dezelfde IRQL waarop het is aangeroepen. Als de waarden verschillen, treedt er een WDF_VIOLATION foutcontrole op met een foutcode van 0xE.
Voordat het terugkeert, verlaat het alle kritieke regio's die het binnengaat. Als de callback-functie terugkeert vanuit een kritieke regio die het is binnengegaan, treedt er een WDF_VIOLATION bugcontrole op met een foutcode van 0xF.
0x10000: Indien ingesteld en als het stuurprogramma gegarandeerde voortgang voor een I/O-wachtrij heeft ingeschakeld, simuleert het framework een situatie met weinig geheugen voor elk van de I/O-aanvragen van de wachtrij.
0x20000: Indien ingesteld en als het stuurprogramma gegarandeerde voortgang voor een I/O-wachtrij heeft ingeschakeld, simuleert het framework een situatie met weinig geheugen voor een aantal willekeurig geselecteerde I/O-aanvragen.
ForceLogsInMiniDump
REG_DWORD
Ingesteld op een niet-nulwaarde om ervoor te zorgen dat het framework informatie van de gebeurtenislogboekregistratie in crashdumpbestanden opneemt.
HostFailKdDebugBreak
REG_DWORD, alleen UMDF
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF
.
Als deze waarde niet nul is en er een kernelfoutopsporingsprogramma is verbonden met de machine, breekt de reflector het kernelfoutopsporingsprogramma in voordat het hostproces wordt beëindigd. HostFailKdDebugBreak is standaard uitgeschakeld in Windows 7- en eerdere besturingssystemen. Vanaf Windows 8 is HostFailKdDebugBreak standaard ingeschakeld.
De reflector activeert ook het kernelfoutopsporingsprogramma bij een onverwachte beëindiging van het hostproces (bijvoorbeeld veroorzaakt door een niet-UMDF-component of door een niet-verwerkte uitzondering). Als er meerdere apparaatstacks zijn gebundeld in het hostproces dat wordt beëindigd, onderbreekt de reflector meerdere keren het foutopsporingsprogramma, eenmaal voor elke apparaatstack die in het hostproces is geladen.
HostProcessDbgBreakOnDriverLoad (stuurprogrammaspecifiek)
REG_DWORD, alleen UMDF, werkt met elk UMDF 1.x/2.x-stuurprogramma dat wordt uitgevoerd op een doelcomputer met UMDF versie 2.31 of hoger
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\<service name>\Parameters\Wdf
.
Deze waarde is alleen van invloed op het opgegeven UMDF-stuurprogramma.
Bevat een vertragingswaarde in seconden. Zorgt ervoor dat WUDFHost probeert verbinding te maken met een foutopsporingsprogramma voor het opgegeven aantal seconden nadat het stuurprogramma is geladen.
Tijdens de opgegeven vertragingsperiode zoekt het hostproces elke seconde naar het foutopsporingsprogramma in de gebruikersmodus en breekt het in als er een verbonden is. Als er binnen deze periode geen foutopsporingsprogramma voor de gebruikersmodus is gekoppeld en de hoge bit is ingesteld (0x80000000), probeert het framework één poging om in te breken in het foutopsporingsprogramma voor de kernelmodus. Zie de sectie over HostProcessDbgBreakOnStart hierboven voor voorbeelden.
Als u wijzigingen wilt aanbrengen in UMDF-registerwaarden, moet u de computer opnieuw opstarten.
HostProcessDbgBreakOnDriverLoad (globaal)
REG_DWORD, alleen UMDF
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}
. U kunt deze instellen met behulp van het WDF Verifier-hulpprogramma (WdfVerifier.exe) in de WDK. Deze waarde is van invloed op alle UMDF-stuurprogramma's op het systeem.
Bevat een vertragingswaarde in seconden. Zorgt ervoor dat WUDFHost het opgegeven aantal seconden vertraagt nadat het stuurprogramma is geladen. Het gedrag voor HostProcessDbgBreakOnDriverLoad is anders hetzelfde als voor HostProcessDbgBreakOnStart.
Het opgeven van HostProcessDbgBreakOnStart of HostProcessDbgBreakOnDriverLoad zorgt ervoor dat het framework andere UMDF-time-outs uitschakelt (bijvoorbeeld Plug en Play-bewerkingen). Dit betekent dat als uw stuurprogramma overmatige time-outs veroorzaakt, het gebruik van deze waarden ertoe kan leiden dat uw stuurprogramma een fatale crash op de doelcomputer veroorzaakt.
HostProcessDbgBreakOnStart
REG_DWORD, alleen UMDF
Deze registerwaarde bevindt zich in HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WUDF\Services\{193a1820-d9ac-4997-8c55-be817523f6aa}
. U kunt deze instellen met behulp van het WDF Verifier-hulpprogramma (WdfVerifier.exe) in de WDK. Deze waarde is van invloed op alle UMDF-stuurprogramma's op het systeem.
Bevat een vertragingswaarde in seconden. Tijdens de opgegeven vertragingsperiode kijkt het hostproces elke seconde of er een debugprogramma in de gebruikersmodus is en breekt het in als er een verbinding is. Als er binnen deze periode geen foutopsporingsprogramma voor de gebruikersmodus is gekoppeld en de hoge bit in HostProcessDbgBreakOnStart is ingesteld (0x80000000), doet het framework één poging om in te breken in het foutopsporingsprogramma van de kernelmodus. Voorbeeld:
Waarde | Resultaat |
---|---|
0x00000004 | Het framework probeert verbinding te maken met het foutopsporingsprogramma in de gebruikersmodus één keer per seconde gedurende 4 seconden. Het framework probeert nooit verbinding te maken met het foutopsporingsprogramma in de kernelmodus. |
0x80000000 | Het framework probeert één poging om verbinding te maken met het foutopsporingsprogramma in de gebruikersmodus. Als het foutopsporingsprogramma voor de gebruikersmodus niet is gekoppeld, probeert het framework verbinding te maken met het foutopsporingsprogramma in de kernelmodus. |
0x80000004 | Het framework probeert verbinding te maken met het foutopsporingsprogramma in de gebruikersmodus één keer per seconde gedurende 4 seconden. Als het foutopsporingsprogramma voor de gebruikersmodus niet binnen 4 seconden is gekoppeld, probeert het framework verbinding te maken met het foutopsporingsprogramma in de kernelmodus. |
U kunt deze registerwaarde ook instellen met behulp van het WDF Verifier-hulpprogramma (WdfVerifier.exe) dat is opgenomen in de WDK.
LogPages
REG_DWORD
Ingesteld op het aantal geheugenpagina's dat het framework toewijst aan de gebeurtenislogboekregistratie. Als de waarde niet is gedefinieerd, wordt in het framework een standaardwaarde van één pagina gebruikt. De maximumwaarde die u kunt instellen is 16 voor computers met een geheugenpagina van 4 kilobyte (x86- en amd64-processors) en 8 voor computers met geheugenpagina's van 8 kilobyte (ia64-processors). (Het besturingssysteem schrijft de logboekinhoud mogelijk niet naar een crashdumpbestand als er een groot aantal pagina's is opgegeven.) Gebruik de AddService-instructie en de AddReg-instructie om deze waarde als volgt in te stellen in uw INF-bestand:
[xxx.NT.Services]
AddService = yyy, 2, zzz.AddService
[zzz.AddService]
DisplayName = %aaa\bbb%
ServiceType = 1
StartType = 3
ErrorControl = 1
ServiceBinary = %12%\ddd.SYS
AddReg = eee.AddReg
[eee.AddReg]
HKR, Parameters\Wdf, LogPages, 0x00010001, 3 ; KMDF IFR size
ObjectLeakDetectionLimit
In sommige gevallen zijn frameworkobjecten onjuist gekoppeld aan een bovenliggende structuur en worden ze niet verwijderd na gebruik. U kunt ObjectLeakDetectionLimit en ObjectsForLeakDetection gebruiken om een maximum aantal objecten op te geven en wat er moet gebeuren wanneer deze drempelwaarde wordt overschreden.
REG_DWORD
Hiermee geeft u het maximum aantal objecten op van de typen die worden beschreven in de sleutel ObjectsForLeakDetection . Als u wilt bepalen of het overschrijden van deze drempelwaarde een foutopsporingsonderbreking of een bugcheck moet veroorzaken, stelt u de sleutel DbgBreakOnError in. De limiet wordt geschaald met het aantal geïnstalleerde apparaten, dus als het stuurprogramma drie WDFDEVICE-objecten maakt, is de limiet drie keer de waarde die is opgegeven in ObjectLeakDetectionLimit.
ObjectenVoorLekdetectie
REG_MULTI_SZ
Gebruiken met ObjectLeakDetectionLimit. Lijst alle typenamen ter verificatie. U kunt bijvoorbeeld opgeven WDFDMATRANSACTION WDFDEVICE
. Gebruik *
als tekenreeks om alle handletypen op te geven. Als de sleutel ObjectsForLeakDetection niet is opgegeven, is het standaardinstelling om WDFREQUEST, WDFWORKITEM, WDFKEY, WDFSTRING, WDFOBJECT en WDFDEVICE te bewaken.
Als u WDFREQUEST opgeeft, telt de verifier alleen WDFREQUEST-objecten die door het stuurprogramma worden gemaakt. Deze functie biedt momenteel geen ondersteuning voor het bijhouden van het WDFMEMORY-objecttype.
TrackHandles
REG_MULTI_SZ
Als deze optie is ingesteld op een lijst met een of meer typenamen van frameworkobjectingangen en als VerifierOn is ingesteld, worden verwijzingen bijgehouden naar alle objectgrepen die overeenkomen met de opgegeven handletypen. Als de handletypenlijst bijvoorbeeld bestaat uit de string "WDFREQUEST WDFQUEUE", houdt het framework verwijzingen bij naar alle aanvraag- en wachtrijobjecten. Als de lijst een sterretje (*) bevat, houdt het framework alle objectgrepen bij.
Verbose Aan
REG_DWORD
Als dit is ingesteld op een niet-nulwaarde, registreert de gebeurtenislogger van het framework aanvullende informatie om problemen met uw stuurprogramma op te sporen, zoals binnenkomsten in of verlaten van interne codepaden. U moet deze waarde alleen instellen terwijl u uw stuurprogramma ontwikkelt. Zie het codevoorbeeld in VerifierOn.
VerifierAllocateFailCount
REG_DWORD
Als dit is ingesteld op een waarde n en als VerifierOn is ingesteld, mislukt het framework elke poging om geheugen toe te wijzen voor de objecten van het stuurprogramma na de nde toewijzing. Deze fout helpt u uw stuurprogramma's omgang met laag-geheugenomstandigheden te testen. Als u bijvoorbeeld VerifierAllocateFailCount instelt op 2, mislukt elke geheugentoewijzing na de tweede toewijzing. De standaardwaarde voor VerifierAllocateFailCount is 0xffffffff. Nadat u VerifierAllocateFailCount hebt ingesteld, kunt u deze uitschakelen door deze in te stellen op (DWORD) -1 of de waarde helemaal te verwijderen.
Houd er rekening mee dat de verifier zowel de toewijzingen telt die door uw stuurprogramma worden aangevraagd als de toewijzingen die door het framework namens uw stuurprogramma worden aangevraagd. Houd er ook rekening mee dat het aantal toewijzingen dat voor uw stuurprogramma kan optreden, kan veranderen van de ene versie van het framework naar de volgende.
VerifierOn
REG_DWORD
Ingesteld op een niet-nulwaarde om KMDF-verifier in te schakelen, waarmee de status- en functieparameters van een stuurprogramma uitgebreid worden gevalideerd. U moet VerifierOn en DbgBreakOnError instellen wanneer u uw stuurprogramma ontwikkelt. Gebruik de AddService-instructie en de AddReg-instructie om deze waarden in te stellen in de sectie Services van het INF-bestand, bijvoorbeeld:
[xxx_Inst.NT.Services]
AddService = xxx,%SPSVCINST_ASSOCSERVICE%,xxx_Service_Inst
[xxx_Service_Inst]
ServiceType = %SERVICE_KERNEL_DRIVER%
StartType = %SERVICE_BOOT_START%
ErrorControl = %SERVICE_ERROR_NORMAL%
LoadOrderGroup = "Base"
ServiceBinary = %12%\xxx.sys
AddReg = KMDFVerifierAddReg
[KMDFVerifierAddReg]
HKR, Parameters\Wdf,VerifierOn,0x00010001,1
HKR, Parameters\Wdf,VerboseOn,0x00010001,1
HKR, Parameters\Wdf,DbgBreakOnError,0x00010001,1
VerifyDownLevel
REG_DWORD, frameworkversie 1.9 en hoger
Als dit is ingesteld op een niet-nulwaarde en als het stuurprogramma is gebouwd met een versie van het framework dat ouder is dan de huidige versie, bevat de verifier van het framework tests die zijn toegevoegd nadat het stuurprogramma is gebouwd. Als deze waarde niet bestaat of is ingesteld op nul, bevat de verificator van het framework alleen de tests die bestonden toen het stuurprogramma werd gebouwd.
Als uw stuurprogramma bijvoorbeeld is gebouwd met versie 1.7 van het framework en als versie 1.9 van het framework is geïnstalleerd op de computer, zorgt het instellen van VerifyDownLevel voor niet-nul ervoor dat de verifier tests bevat die zijn toegevoegd aan versie 1.9 van de verifier wanneer het stuurprogramma wordt uitgevoerd.
VerifyOn
REG_DWORD
Ingesteld op een niet-nulwaarde om de WDFVERIFY-macro in te schakelen die is gedefinieerd in Wdfassert.h, of ingesteld op nul om de macro uit te schakelen. Als de VerifierOn-waarde is ingesteld, wordt VerifyOn impliciet ingesteld op niet-nul.