WdfSpinLockCreate 함수(wdfsync.h)
[KMDF 및 UMDF에 적용]
WdfSpinLockCreate 메서드는 프레임워크 스핀 잠금 개체를 만듭니다.
구문
NTSTATUS WdfSpinLockCreate(
[in, optional] PWDF_OBJECT_ATTRIBUTES SpinLockAttributes,
[out] WDFSPINLOCK *SpinLock
);
매개 변수
[in, optional] SpinLockAttributes
스핀 잠금 개체의 특성을 지정하는 호출자가 할당한 WDF_OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. 이 매개 변수는 선택 사항이며 WDF_NO_OBJECT_ATTRIBUTES 수 있습니다.
[out] SpinLock
새 프레임워크 스핀 잠금 개체에 대한 핸들을 수신하는 위치에 대한 포인터입니다.
반환 값
WdfSpinLockCreate 는 작업이 성공하면 STATUS_SUCCESS 반환합니다.
WdfSpinLockCreate 메서드가 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.
이 메서드는 다른 NTSTATUS 값을 반환할 수도 있습니다.
설명
WdfSpinLockCreate 메서드는 프레임워크 스핀 잠금 개체를 만듭니다. 스핀 잠금 개체를 만든 후 드라이버는 WdfSpinLockAcquire 를 호출하여 잠금을 획득하고 WdfSpinLockRelease 를 호출하여 잠금을 해제할 수 있습니다.
기본적으로 새 스핀 잠금 개체의 부모는 WdfDriverCreate 메서드가 만든 프레임워크 드라이버 개체입니다. WDF_OBJECT_ATTRIBUTES 구조체의 ParentObject 멤버를 사용하여 다른 부모를 지정할 수 있습니다. 프레임워크는 부모 개체를 삭제할 때 스핀 잠금 개체를 삭제합니다. 드라이버가 기본 부모를 변경하지 않으면 드라이버가 개체 사용을 마쳤을 때 스핀 잠금 개체를 삭제해야 합니다. 그렇지 않으면 I/O 관리자가 드라이버를 언로드할 때까지 개체가 유지됩니다.
스핀 잠금에 대한 자세한 내용은 Framework-Based 드라이버에 대한 동기화 기술을 참조하세요.
예제
다음 코드 예제에서는 WDF_OBJECT_ATTRIBUTES 초기화하고, 스핀 잠금의 부모 개체가 디바이스 개체가 되도록 지정하고, WdfSpinLockCreate를 호출합니다.
WDF_OBJECT_ATTRIBUTES attributes;
WDFSPINLOCK lockHandle;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = Device;
status = WdfSpinLockCreate(
&attributes,
&lockHandle
);
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfsync.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | <=DISPATCH_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ParentObjectCheckLock(kmdf), WdfSpinlock(kmdf) |