DiUninstallDriverW 関数 (newdev.h)

DiUninstallDriver 関数は、別の一致するドライバー パッケージを使用してそれらのデバイスをインストールすることによって、インストールされている任意のデバイスからドライバー パッケージを削除します(使用可能な場合は null ドライバー)。他の一致するドライバー パッケージがない場合は null ドライバー。 その後、指定したドライバー パッケージがドライバー ストアから削除されます。

構文

BOOL DiUninstallDriverW(
  [in, optional]  HWND    hwndParent,
  [in]            LPCWSTR InfPath,
  [in]            DWORD   Flags,
  [out, optional] PBOOL   NeedReboot
);

パラメーター

[in, optional] hwndParent

ドライバーのアンインストールに関連付けられているユーザー インターフェイス コンポーネントを表示するために DiUninstallDriver が使用する必要がある最上位ウィンドウへのハンドル。 このパラメーターは省略可能であり、 NULL に設定できます。

[in] InfPath

ドライバー パッケージの INF ファイルの完全修飾パスを提供する NULL で終わる文字列へのポインター。

[in] Flags

0 個以上のフラグを指定する DWORD 型の値: DIURFLAG_NO_REMOVE_INF。 通常、このフラグは 0 に設定する必要があります。

このフラグが 0 の場合、 DiUninstallDriver は、別の一致するドライバー パッケージを使用してそれらのデバイスをインストールすることによって、インストールされているデバイスからドライバー パッケージを削除します (使用可能な場合は null ドライバー)。他に一致するドライバー パッケージがない場合は null ドライバー。 ただし、このフラグが DIURFLAG_NO_REMOVE_INF に設定されている場合、 DiUninstallDriver は、インストールされているデバイスからドライバー パッケージを削除しますが、ドライバー ストアからドライバー パッケージを削除しません。

注意: ドライバー パッケージを強制的にアンインストールすると、互換性の高い、または新しいドライバー パッケージが互換性の低いドライバーまたは古いドライバーに置き換えられる可能性があります。
 
Windows がデバイスのドライバー パッケージを選択する方法については、「 Windows でドライバーを選択する方法」を参照してください。

[out, optional] NeedReboot

アンインストールを完了するためにシステムの再起動が必要かどうかを示すために DiUninstallDriver が設定する BOOL 型の値へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。 パラメーターを指定し、アンインストールを完了するためにシステムの再起動が必要な場合、 DiUninstallDriver は値を TRUE に設定します。 この場合、呼び出し元はユーザーにシステムの再起動を求める必要があります。 このパラメーターを指定し、アンインストールを完了するためにシステムの再起動が必要ない場合、 DiUninstallDriver は値を FALSE に設定 します。 パラメーターが NULL で、アンインストールを完了するためにシステムの再起動が必要な場合、 DiUninstallDriver はシステム再起動ダイアログ ボックスを表示します。 このパラメーターの詳細については、次の 「解説 」セクションを参照してください。

戻り値

DiUninstallDriver は、関数がインストールされているデバイスからドライバー パッケージを正常に削除し、システムのドライバー ストアから正常に削除された場合に TRUE を返します。 ドライバー パッケージがドライバー ストアから正常にアンインストールされない場合、 DiUninstallDriverFALSE を 返し、 GetLastError を呼び出すことでログに記録されたエラーを取得できます。 GetLastError が返す可能性がある一般的なエラー値の一部は次のとおりです。

リターン コード 説明
ERROR_ACCESS_DENIED
呼び出し元には管理者特権がありません。 既定では、Windows では、ドライバー ストアからドライバー パッケージをアンインストールするために、呼び出し元に管理者特権が必要です。
ERROR_FILE_NOT_FOUND
指定した INF ファイルのパスが存在しません。
ERROR_INVALID_FLAGS
Flags に指定された値が 0 またはDIURFLAG_NO_REMOVE_INFと等しくありません。
ERROR_IN_WOW64
呼び出し元のアプリケーションは、64 ビット環境で実行しようとしている 32 ビット アプリケーションです。これは許可されていません。 詳細については、「 64 ビット システムへのデバイスのインストール」を参照してください。

注釈

一般に、アンインストール アプリケーションは NeedRebootNULL に設定して、削除を完了するために再起動が必要な場合にシステムの再起動をユーザーに求める DiUninstallDriver を指示する必要があります。 アプリケーションでは、次の場合にのみ NeedReboot ポインターを指定する必要があります。

  • アンインストールを完了するには、アプリケーションで DiUninstallDriver を複数回呼び出す必要があります。 この場合、アプリケーションは、DiUninstallDriver への呼び出しによって TRUENeedReboot 値が返されるかどうかを記録し、その場合は、DiUninstallDriver の最後の呼び出しが返された後にシステムを再起動するようにユーザーに求める必要があります。
  • システムの再起動を行う前に、 DiUninstallDriver を呼び出す以外の必要な操作を実行する必要があります。 システムの再起動が必要な場合、アプリケーションは必要な操作を完了し、ユーザーにシステムの再起動を求めるメッセージを表示する必要があります。

要件

要件
サポートされている最小のクライアント Windows 10 バージョン 1703 以降のバージョンの Windows で使用できます。
対象プラットフォーム デスクトップ
Header newdev.h (Newdev.h を含む)
Library Newdev.lib

こちらもご覧ください

DiUninstallDevice