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 |