2016-04-14 17 views
0

私はpnpドライバを作成しようとしていますが、sc start driver-nameを実行するとシステムエラー1058が発生します。しかし、nonpnp WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK);config.DriverInitFlags |= WdfDriverInitNonPnpDriver;のコードを修正すると、サービスが開始され、デバッグすることができます。kdmf pnpドライバはインストール時にデバイスを見つけることができません

デバイスマネージャで検証されたデバイスに対して、異なるhwid値を試しました。 DriverEntryは正常に動作し、windbgを使用しましたが、デバイスの追加機能は呼び出されません。

pnpのドライバエントリコード。 INFファイルの

// 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; 
} 

答えて

0

どうやら以前のコピーがストアに残り、いくつかの掘削後、私は次のようやって終わったので、レジストリが更新されていませんでした。

Cでチェック:\ WINDOWS \ Infの\のSETUPAPIを。 dev.logにコピーして、不足しているファイルをコピーします。 -

  • pnputilがoemXX.inf
  • 手動キー HKLM \ SYSTEM \ CURRENTCONTROLSET \制御\クラス{あなたのクラス-ID}
  • pnputilを除去-d pnputil 次に使用ストアからドライバを削除しましたI /パス/に/ INF

this sitethis post

のおかげで
関連する問題