次の方法で共有


WdmlibIoCreateDeviceSecure 関数 (wdmsec.h)

WdmlibIoCreateDeviceSecure 関数 (または IoCreateDeviceSecure ) は、名前付きデバイス オブジェクトを作成し、指定されたセキュリティ設定を適用します。

構文

NTSTATUS WdmlibIoCreateDeviceSecure(
  [in]           PDRIVER_OBJECT   DriverObject,
  [in]           ULONG            DeviceExtensionSize,
  [in, optional] PUNICODE_STRING  DeviceName,
  [in]           DEVICE_TYPE      DeviceType,
  [in]           ULONG            DeviceCharacteristics,
  [in]           BOOLEAN          Exclusive,
  [in]           PCUNICODE_STRING DefaultSDDLString,
  [in, optional] LPCGUID          DeviceClassGuid,
                 PDEVICE_OBJECT   *DeviceObject
);

パラメーター

[in] DriverObject

呼び出し元のドライバー オブジェクトへのポインター。 各ドライバーは、DriverEntry ルーチンへのパラメーター内のドライバー オブジェクトへのポインターを受け取ります。 WDM 関数およびフィルター ドライバーは、AddDevice ルーチンでドライバー オブジェクト ポインターも受け取ります。

[in] DeviceExtensionSize

デバイス オブジェクトの デバイス拡張機能の に割り当てるドライバーによって決定されたバイト数を指定します。 デバイス拡張機能の内部構造はドライバー定義です。

[in, optional] DeviceName

必要に応じて、デバイス オブジェクトの名前を指定する null で終わる Unicode 文字列を含むバッファーを指します。 文字列は完全なパス名である必要があります。 名前を指定しない場合、FILE_AUTOGENERATED_DEVICE_NAME フラグは、DeviceCharacteristics パラメーターに存在する必要があります。 (名前のないデバイス オブジェクトを作成するには、IoCreateDevice ルーチンを使用します)。

[in] DeviceType

デバイスの種類 (FILE_DEVICE_DISK、FILE_DEVICE_KEYBOARDなど) を示すシステム定義FILE_DEVICE_XXX 定数、または新しい種類のデバイスのベンダー定義値のいずれかを指定します。 詳細については、「デバイスの種類の指定」を参照してください。 (バス ドライバーにはデバイスの種類に関する情報がない可能性があるため、PDO のデバイスの種類の値は、INF AddReg ディレクティブで指定できます)。

[in] DeviceCharacteristics

ドライバーのデバイスに関する追加情報を提供する 1 つ以上のシステム定義定数 ORed を指定します。 使用可能なデバイス特性の一覧については、 DEVICE_OBJECTを参照してください。 デバイス特性を指定する方法の詳細については、「デバイス特性の指定」を参照してください。 ほとんどのドライバーは、このパラメーターのFILE_DEVICE_SECURE_OPENを指定します。

[in] Exclusive

デバイス オブジェクトが 排他デバイスを表すかどうかを指定します。 ほとんどのドライバーは、この値を FALSE 設定します。 詳細については、「デバイス オブジェクトへの排他アクセスの指定」を参照してください。

[in] DefaultSDDLString

デバイス オブジェクトの既定のセキュリティ設定の文字列形式を指定します。 デバイス オブジェクトに適用されるセキュリティは、システム管理者が、DeviceClassGuid パラメーターによって識別されるレジストリのセクションにオーバーライドを配置しない限り、この文字列から派生します。

セキュリティ設定は、セキュリティ記述子定義言語 (SDDL) のサブセットで指定されます。 定義済みの定数 (SDDL_DEVOBJ_XXX) も用意されています。 詳細については、「デバイス オブジェクトのセキュリティ保護」を参照してください。

[in, optional] DeviceClassGuid

DefaultSDDLStringDeviceTypeDeviceCharacteristicsおよび排他 パラメーターのオーバーライドを含むレジストリのセクションを識別する GUID へのポインター。

カスタム クラス GUID は常に指定する必要があります。 既存のクラス GUID は指定しないでください。 既存のクラス GUID を指定した場合、既存のクラス GUID を指定しようとする他のドライバーがインストールに失敗したり、正しくないセキュリティ設定でインストールされたりする可能性があります。
 

DeviceObject

新しく作成された DEVICE_OBJECT 構造体へのポインターを受け取る変数へのポインター。 DEVICE_OBJECT 構造体は、非ページ プールから割り当てられます。

戻り値

WdmlibIoCreateDeviceSecure 、成功した場合はSTATUS_SUCCESS、失敗した場合は適切な NTSTATUS エラー コードが返されます。 この関数によって返される可能性があるエラー コードの一部の一覧を次に示します。

備考

WdmlibIoCreateDeviceSecure 名前付きデバイス オブジェクトを作成し、指定したセキュリティ設定を適用して、オブジェクトへのポインターを返します。 呼び出し元は、IoDeleteDevice 呼び出すことによって、不要になったときにオブジェクトを削除する必要があります。

このルーチンはオペレーティング システムの一部ではありません。 ドライバーは、Microsoft Windows 2000 以降のバージョンの Windows で Wdmsec.lib にリンクすることで、ルーチンを使用できます。 (Wdmsec.lib ライブラリは、最初にドライバー開発キット [DDK] の Microsoft Windows XP Service Pack 1 [SP1] および Windows Server 2003 エディションに付属しており、Windows ドライバー キット [WDK] にも付属しています)。

INF ファイルでセキュリティ記述子を設定することが保証されていない名前付きデバイス オブジェクトを作成するドライバーは、WdmlibIoCreateDeviceSecure 使用する必要があります。 詳細については、「デバイス オブジェクトの作成」を参照してください。 呼び出し元は、返されたデバイス オブジェクトの特定のメンバーを設定する必要があります。 詳細については、「デバイス オブジェクト の初期化」およびデバイスのデバイスの種類固有のドキュメントを参照してください。

DeviceTypeDeviceCharacteristics 値を正しいパラメーターで指定するように注意してください。 どちらのパラメーターもシステム定義FILE_XXX 定数を使用し、一部のドライバー ライターは間違ったパラメーターの値を誤って指定します。

呼び出し元は、Flags フィールドなど、返されるデバイス オブジェクト内の特定のフィールドを設定し、ドライバーで定義された情報を使用してデバイス拡張機能を初期化する役割を担います。 新しいデバイス オブジェクトに必要なその他の操作については、「デバイス オブジェクト の初期化」およびデバイスのデバイスの種類固有のドキュメントを参照してください。

DeviceClassGuid パラメーターで指定された GUID によって、デバイス オブジェクトのデバイス セットアップ クラスが決まります。 (デバイス セットアップ クラスの詳細については、「デバイス セットアップ クラスの」を参照してください)。呼び出し元は、システム管理者がデバイスのセキュリティ設定を変更できるように値を指定する必要があります (たとえば、特定のユーザーへのアクセスを拒否するため)。 詳細については、「インストール後のデバイス オブジェクト レジストリプロパティの設定を参照してください。

WDM 以外のドライバーは、既存のデバイス セットアップ クラスでまだ使用されていない新しい GUID を指定します。 Microsoft Windows SDK に含まれている GuidGen.exe ツールを使用して、新しい GUID を生成します。

生モード対応デバイスを処理する WDM バス ドライバーは、デバイスのデバイス セットアップ クラスを指定できますが、そのクラスが既に作成されていることが保証されている場合に限ります。 それ以外の場合は、新しい GUID を作成します。

ディスク、テープ、CD-ROM、および RAM ディスクのデバイス オブジェクトには、ボリュームがデバイスにマウントされていないことを示すために初期化されたボリューム パラメーター ブロック (VPB) が与えられます。

WdmlibIoCreateDeviceSecure するドライバーの呼び出しでエラーが返された場合、ドライバーは、そのデバイスに割り当てられたリソースを解放する必要があります。

必要条件

要件 価値
サポートされる最小クライアント 「解説」セクションを参照してください。
ターゲット プラットフォーム デスクトップ
ヘッダー wdmsec.h (Wdmsec.h を含む)
ライブラリ Wdmsec.lib
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 する AddDevice(wdm), HwStorPortProhibitedDDDIs(storport), IrqlIoPassive1(wdm), ミニポートOnlyWdmDevice

関連項目

DEVICE_OBJECT

IoAttachDevice

IoAttachDeviceToDeviceStack

IoCreateDevice

IoCreateSymbolicLink

IoDeleteDevice