次の方法で共有


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 以降で使用できます。
ターゲット プラットフォーム 万国
ヘッダー wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
ライブラリ NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI コンプライアンス規則 する HwStorPortProhibitedDDIs(storport), IrqlExApcLte2(wdm), IrqlExPassive

関連項目

ExNotifyCallback する

ExRegisterCallback

InitializeObjectAttributes

ObDereferenceObject