WdfDeviceCreateSymbolicLink 関数 (wdfdevice.h)

[KMDF と UMDF に適用]

WdfDeviceCreateSymbolicLink メソッドは、指定されたデバイスへのシンボリック リンクを作成します。

構文

NTSTATUS WdfDeviceCreateSymbolicLink(
  [in] WDFDEVICE        Device,
  [in] PCUNICODE_STRING SymbolicLinkName
);

パラメーター

[in] Device

フレームワーク デバイス オブジェクトへのハンドル。

[in] SymbolicLinkName

デバイスのユーザーに表示される名前を含む UNICODE_STRING 構造体へのポインター。

戻り値

操作が成功した場合、 WdfDeviceCreateSymbolicLink はSTATUS_SUCCCESSを返します。 その他の戻り値は次のとおりです。

リターン コード 説明
STATUS_INSUFFICIENT_RESOURCES
システムは、デバイス名を格納する領域を割り当てることができません。
 

メソッドは、他の NTSTATUS 値を返す場合があります。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ドライバーがデバイスのシンボリック リンクを作成する場合、アプリケーションはシンボリック リンク名を使用してデバイスにアクセスできます。 通常、フレームワーク ベースのドライバーはシンボリック リンクを提供する代わりに、アプリケーションがデバイスへのアクセスに使用できるデバイス インターフェイス を提供します。

デバイスが予期せず削除された場合 (突然削除された場合)、フレームワークはデバイスへのシンボリック リンクを削除します。 ドライバーは、デバイスの新しいインスタンスのシンボリック リンク名を使用できます。

KMDF ドライバーの次のコード例では、アプリケーションがデバイスへのアクセスに使用できる MS-DOS デバイス名 を作成します。

#define DOS_DEVICE_NAME  L"\\DosDevices\\MyDevice"
DECLARE_CONST_UNICODE_STRING(dosDeviceName, DOS_DEVICE_NAME);
NTSTATUS  status;

status = WdfDeviceCreateSymbolicLink(
                                     controlDevice,
                                     &dosDeviceName
                                     );
if (!NT_SUCCESS(status)) {
    goto Error;
}

次のコード例に示すように、UMDF ドライバーはグローバル DosDevices 名前空間にシンボリック リンク名を指定する必要があります。

#define DOS_DEVICE_NAME  L"\\DosDevices\\Global\\MyDevice"
DECLARE_CONST_UNICODE_STRING(dosDeviceName, DOS_DEVICE_NAME);
NTSTATUS  status;

status = WdfDeviceCreateSymbolicLink(
                                     controlDevice,
                                     &dosDeviceName
                                     );
if (!NT_SUCCESS(status)) {
    goto Error;
}

グローバルおよびローカル \DosDevices 名前空間の詳細については、「 ローカルおよびグローバル MS-DOS デバイス名」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdfdevice.h (Wdf.h を含む)
Library Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

UNICODE_STRING