次の方法で共有


WdfControlDeviceInitAllocate 関数 (wdfcontrol.h)

[KMDF にのみ適用]

WdfControlDeviceInitAllocate メソッドは、ドライバーが新しいコントロール デバイス オブジェクトを作成するときに使用する WDFDEVICE_INIT 構造体を割り当てます。

構文

PWDFDEVICE_INIT WdfControlDeviceInitAllocate(
  [in] WDFDRIVER            Driver,
  [in] const UNICODE_STRING *SDDLString
);

パラメーター

[in] Driver

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

[in] SDDLString

Unicode 文字列を記述する UNICODE_STRING 構造体へのポインター。 この文字列は、セキュリティ記述子のセキュリティ記述子定義言語 (SDDL) 表現です。 詳細については、次の「解説」セクションを参照してください。

戻り値

WdfControlDeviceInitAllocate は、操作が成功した場合、フレームワークによって割り当てられた WDFDEVICE_INIT 構造体へのポインターを返します。 それ以外の場合、メソッドは NULL 返します。

備考

ドライバーでコントロール デバイス オブジェクトを作成する場合、ドライバーは WdfControlDeviceInitAllocate 呼び出して、WdfDeviceCreate に渡すことができるWDFDEVICE_INIT構造体取得する必要があります。

ドライバーは、SDDL のサブセットを使用してセキュリティ設定を指定できます。 Wdmsec.h ファイルは、使用できる xxx形式の定数SDDL_DEVOBJ_セットを定義します。 セキュリティ記述子と SDDL の詳細については、「デバイス オブジェクトのセキュリティ保護」を参照してください。

WdfDeviceInitAssignSDDLString メソッドは、WdfControlDeviceInitAllocate が指定 セキュリティ設定 (存在する場合) を上書きします。

WdfControlDeviceInitAllocate 呼び出す方法の詳細については、「コントロール デバイス オブジェクトの使用 」を参照してください。

次のコード例では、DEVICE_INIT構造体の割り当て、デバイス オブジェクト名の割り当て、シャットダウン通知コールバック関数の登録、コントロール デバイス オブジェクトの作成を行います。 WdfControlDeviceInitAllocateを使用するより複雑な例については、NONPNP サンプル ドライバーまたは NDISProt サンプル ドライバーを参照してください。

PWDFDEVICE_INIT  deviceInit = NULL;
NTSTATUS  status;
WDF_OBJECT_ATTRIBUTES  objectAttribs;

deviceInit = WdfControlDeviceInitAllocate(
                                          hDriver,
                                          &SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RW_RES_R
                                          );
if (deviceInit == NULL) {
    status = STATUS_INSUFFICIENT_RESOURCES;
    goto Error;
}
status = WdfDeviceInitAssignName(
                                 deviceInit,
                                 &ntDeviceName
                                 );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(deviceInit);
    deviceInit = NULL;
    goto Error;
}
WdfControlDeviceInitSetShutdownNotification(
                                            deviceInit,
                                            EvtShutdownNotification,
                                            WdfDeviceShutdown
                                            );
WDF_OBJECT_ATTRIBUTES_INIT(&objectAttribs);

status = WdfDeviceCreate(
                         &deviceInit,
                         &objectAttribs,
                         &controlDevice
                         );
if (!NT_SUCCESS(status)) {
    WdfDeviceInitFree(deviceInit);
    deviceInit = NULL;
    goto Error;
}
WdfControlFinishInitializing(controlDevice);

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
ヘッダー wdfcontrol.h (Wdf.h を含む)
ライブラリ Wdf01000.sys (フレームワーク ライブラリのバージョン管理を参照)。
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する ControlDeviceInitAPI(kmdf), CtlDeviceFinishInitDeviceAdd(kmdf), CtlDeviceFinishInitDrEntry(kmdf), DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(kmdf)InitFreeDeviceCreate(kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

関連項目

WDFDEVICE_INIT

WDF_OBJECT_ATTRIBUTES_INIT

WdfControlDeviceInitSetShutdownNotification

WdfControlFinishInitializing

WdfDeviceCreate

WdfDeviceInitAssignName

WdfDeviceInitAssignSDDLString