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부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 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