다음을 통해 공유


WdfDeviceConfigureRequestDispatching 함수(wdfdevice.h)

[KMDF 및 UMDF에 적용]

WdfDeviceConfigureRequestDispatching 메서드를 사용하면 프레임워크가 지정된 형식의 I/O 요청을 지정된 I/O 큐에 큐에 대기하게 됩니다.

구문

NTSTATUS WdfDeviceConfigureRequestDispatching(
  [in] WDFDEVICE        Device,
  [in] WDFQUEUE         Queue,
  [in] WDF_REQUEST_TYPE RequestType
);

매개 변수

[in] Device

프레임워크 디바이스 개체에 핸들을 제공합니다.

[in] Queue

프레임워크 큐 개체에 핸들을 제공합니다.

[in] RequestType

큐에 대기할 요청 유형을 식별하는 WDF_REQUEST_TYPE 형식의 열거자를 제공합니다. 유효한 열거자는 다음과 같습니다.

WdfRequestTypeCreate

WdfRequestTypeRead

WdfRequestTypeWrite

WdfRequestTypeDeviceControl

WdfRequestTypeDeviceControlInternal

반환 값

작업이 성공하면 메서드는 STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER
입력 매개 변수가 잘못되었습니다.
STATUS_INSUFFICIENT_RESOURCES
사용 가능한 메모리 양이 너무 적습니다.
STATUS_WDF_BUSY
드라이버가 이미 지정된 요청 유형에 큐를 할당했습니다.
 

메서드는 다른 NTSTATUS 값을 반환할 수 있습니다.

드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.

설명

WdfDeviceConfigureRequestDispatching에 대한 각 호출은 하나의 요청 유형을 지정합니다. 단일 I/O 큐가 여러 유형의 요청(예: 읽기 및 쓰기 요청)을 수신하도록 하려는 경우 드라이버는 단일 I/O 큐에 대해 WdfDeviceConfigureRequestDispatching을 여러 번 호출할 수 있습니다.

WdfDeviceConfigureRequestDispatching에 대한 자세한 내용은 I/O 큐 만들기 및 I/O 큐관리를 참조하세요.

예제

다음 코드 예제에서는 WDF_IO_QUEUE_CONFIG 구조를 초기화하고, I/O 큐를 만든 다음, 쓰기 요청을 받도록 큐를 구성합니다.

WDF_IO_QUEUE_CONFIG queueConfig;
WDFQUEUE WriteQueue;

WDF_IO_QUEUE_CONFIG_INIT(
                         &queueConfig,
                         WdfIoQueueDispatchSequential
                         );
queueConfig.EvtIoWrite = MyEvtIoWrite;
status = WdfIoQueueCreate(
                          Device,
                          &queueConfig,
                          WDF_NO_OBJECT_ATTRIBUTES,
                          &WriteQueue
                          );
if(!NT_SUCCESS(status)) {
    return status;
}
status = WdfDeviceConfigureRequestDispatching(
                                              Device,
                                              WriteQueue,
                                              WdfRequestTypeWrite
                                              );
if(!NT_SUCCESS(status)) {
    return status;
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.0
최소 UMDF 버전 2.0
머리글 wdfdevice.h(Wdf.h 포함)
라이브러리 Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF)
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

추가 정보

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate