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 に設定 します。 このパラメーターは、 CreateFALSE の場合、または既存のオブジェクトを開くときに無視されます。

戻り値

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

こちらもご覧ください

ExNotifyCallback

ExRegisterCallback

InitializeObjectAttributes

ObDereferenceObject