2016-04-14 17 views
0

Ich versuche, einen PNP-Treiber zu erstellen, aber wenn ich sc start driver-name ausführen bekomme ich einen Systemfehler 1058 (deaktivieren deaktiviert oder kein aktiviertes Gerät zugeordnet). Wenn ich jedoch den Code für nonpnp WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK); und config.DriverInitFlags |= WdfDriverInitNonPnpDriver; ändern, startet der Dienst und ich kann debuggen.kdmf pnp Treiber kann Gerät bei der Installation nicht finden

Ich habe verschiedene hwid Werte für das Gerät durch Geräte-Manager verifiziert versucht. Der DriverEntry läuft gut, ich habe windbg benutzt, aber die Geräte-Add-Funktion wird nie aufgerufen.

Treibereingabecode für pnp.

// prototype for add device function 
EVT_WDF_DRIVER_DEVICE_ADD QDeviceAdd; 

NTSTATUS DriverEntry(
    IN OUT PDRIVER_OBJECT DriverObject, 
    IN PUNICODE_STRING  RegistryPath 
    ) 
{ 
    NTSTATUS      status = STATUS_SUCCESS; 
    WDF_DRIVER_CONFIG    config; 
    WDFDRIVER      hDriver; 
    PWDFDEVICE_INIT    pInit = NULL; 
    WDF_OBJECT_ATTRIBUTES   attributes; 

    KdPrint(("enabling wpp tracing\n")); 
    WPP_INIT_TRACING(DriverObject, RegistryPath); 

    WDF_DRIVER_CONFIG_INIT(
     &config, 
     QDeviceAdd // WDF_NO_EVENT_CALLBACK This is a non-pnp driver. 
     ); 

    WDF_OBJECT_ATTRIBUTES_INIT(&attributes); 
    attributes.EvtCleanupCallback = QEvtDriverContextCleanup; 

    status = WdfDriverCreate(DriverObject, 
     RegistryPath, 
     &attributes, 
     &config, 
     &hDriver); 

    if (!NT_SUCCESS(status)) { 
     KdPrint(("NonPnp: WdfDriverCreate failed with status 0x%x\n", status)); 
     WPP_CLEANUP(DriverObject); 
     return status; 
    } 

    return status; 
} 

Antwort

0

Offenbar vorherigen Kopien der INF-Datei blieb in den Laden und Registrierung nicht aktualisiert wurde so nach einiger Graben ich folgendes endete tun:

in C Kontrolle: \ Windows \ Inf \ setupapi. dev.log und kopiert die fehlende Datei. gelöscht dann den Treiber von Speicher pnputil

  • pnputil mit -d OEMxx.inf
  • manuell den Schlüssel HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class entfernt {your-Klasse-ID}
  • pnputil - i/path/to/inf

Dank this site und this post