0

pnp ドライバーを作成しようとしていますが、実行するsc start driver-nameとシステム エラー 1058 が発生します (disable disabled または no enabled device associated)。ただし、nonpnp のコードを変更するWDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK);config.DriverInitFlags |= WdfDriverInitNonPnpDriver;、サービスが開始され、デバッグできるようになります。

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

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

1 に答える 1