ExCreateCallback 関数 (wdm.h)
ExCreateCallback ルーチンは、新しいコールバック オブジェクトを作成するか、呼び出し元の代わりに既存のコールバック オブジェクトを開きます。
構文
NTSTATUS ExCreateCallback(
[out] PCALLBACK_OBJECT *CallbackObject,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] BOOLEAN Create,
[in] BOOLEAN AllowMultipleCallbacks
);
パラメーター
[out] CallbackObject
コールバック オブジェクトへのポインターを受け取る場所へのポインター。これは、不透明なシステム構造です。 ExCreateCallback 呼び出しが成功した場合、ルーチンは新しく作成または開いたコールバック オブジェクトのアドレスをこの場所に書き込みます。 このルーチンから取得したコールバック オブジェクト ポインターは、ExRegisterCallback ルーチンまたは ExNotifyCallback ルーチンにパラメーターとして指定できます。
[in] ObjectAttributes
コールバック オブジェクトの属性を含む OBJECT_ATTRIBUTES 構造体へのポインター。 この構造体は、以前に InitializeObjectAttributes ルーチンによって初期化されました。
[in] Create
コールバック オブジェクトを作成するかどうか。 要求されたオブジェクトを開くことができない場合に新しいコールバック オブジェクトを作成するには 、TRUE に 設定します。 それ以外の場合は、FALSE に設定 します。
[in] AllowMultipleCallbacks
新しく作成されたコールバック オブジェクトで、複数の登録済みコールバック ルーチンを許可するかどうか。 複数の登録済みコールバック ルーチンを許可するには 、TRUE に 設定します。 それ以外の場合は、FALSE に設定 します。 Create が FALSE の場合、または既存のオブジェクトを開く場合、このパラメーターは無視されます。
戻り値
ExCreateCallback は、コールバック オブジェクトが開かれたか作成された場合にSTATUS_SUCCESSを返します。 それ以外の場合は、エラーの性質を示す NTSTATUS エラー コードが返されます。
注釈
ドライバーは ExCreateCallback を呼び出して、新しいコールバック オブジェクトを作成するか、既存のコールバック オブジェクトを開きます。 オブジェクトが作成または開かれた後、他のコンポーネントは ExRegisterCallback ルーチンを呼び出してコールバック オブジェクトにコールバック ルーチンを登録できます。
ExCreateCallback を呼び出す前に、ドライバーは InitializeObjectAttributes を呼び出して、コールバック オブジェクトのOBJECT_ATTRIBUTES構造体を初期化する必要があります。 名前のないコールバック オブジェクトは許可されません。 呼び出し元は、 オブジェクトの名前を指定する必要があります。それ以外の場合、呼び出しはSTATUS_UNSUCCESSFULで失敗します。 呼び出し元は、コールバック オブジェクトに OBJ_PERMANENT 属性を指定して、オブジェクトがオブジェクト マネージャーに登録される前にオブジェクトが削除されないようにする必要があります。 呼び出し元は、必要な他の属性 (OBJ_CASE_INSENSITIVEなど) も指定する必要があります。
コールバック オブジェクトを使用してすべての操作が完了したら、メモリ リークを防ぐために、ドライバーは オブジェクトを削除する必要があります。 OBJ_PERMANENT オブジェクト属性を使用して作成されたオブジェクトの削除については、「 ObDereferenceObject」を参照してください。
次の表は、オペレーティング システムがドライバーで使用するために作成するコールバック オブジェクトを示しています。
コールバック オブジェクト名 | 使用 |
---|---|
\Callback\SetSystemTime | オペレーティング システムは、システム時刻が変更されるたびに、このオブジェクトに登録されているコールバック ルーチンを呼び出します。 |
\Callback\PowerState | オペレーティング システムは、特定のシステム電源特性が変更されるたびに、このオブジェクトに登録されているコールバック ルーチンを呼び出します。 ドライバーは、( ExRegisterCallback を呼び出すことによって) コールバック通知に登録するときに、通知する必要がある変更を指定できます。 |
コールバック オブジェクトの詳細については、「 コールバック オブジェクト」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm), IrqlExPassive |