WdfDeviceCreateDeviceInterface 함수(wdfdevice.h)
[KMDF 및 UMDF에 적용]
WdfDeviceCreateDeviceInterface 메서드는 지정된 디바이스에 대한 디바이스 인터페이스를 만듭니다.
구문
NTSTATUS WdfDeviceCreateDeviceInterface(
[in] WDFDEVICE Device,
[in] const GUID *InterfaceClassGUID,
[in, optional] PCUNICODE_STRING ReferenceString
);
매개 변수
[in] Device
프레임워크 디바이스 개체에 대한 핸들입니다.
[in] InterfaceClassGUID
디바이스 인터페이스 클래스를 식별하는 GUID에 대한 포인터입니다.
[in, optional] ReferenceString
디바이스 인터페이스에 대한 참조 문자열을 설명하는 UNICODE_STRING 구조체에 대한 포인터입니다. 문자열에는 경로 구분 기호 문자("/" 또는 "\")가 포함되어서는 안 됩니다. 이 매개 변수는 선택 사항이며 NULL일 수 있습니다. 자세한 내용은 아래 설명 부분을 참조하십시오.
반환 값
WdfDeviceCreateDeviceInterface 는 작업이 성공하면 STATUS_SUCCESS 반환합니다.
WdfDeviceCreateDeviceInterface에서 반환할 수 있는 다른 반환 값 목록은 프레임워크 개체 만들기 오류를 참조하세요.
메서드는 다른 NTSTATUS 값을 반환할 수 있습니다.
드라이버가 잘못된 개체 핸들을 제공하는 경우 버그 검사 발생합니다.
설명
드라이버는 EVT_WDF_DRIVER_DEVICE_ADD 또는 디바이스가 시작된 후 WdfDeviceCreateDeviceInterface를 호출할 수 있습니다.
드라이버가 EVT_WDF_DRIVER_DEVICE_ADD 콜백 함수에서 이 함수를 호출하면 디바이스가 시작되고 디바이스가 중지될 때 비활성화될 때 인터페이스가 자동으로 활성화됩니다. 자동 사용을 방지하기 위해 드라이버는 IsInterfaceEnabled 매개 변수가 FALSE로 설정된 WdfDeviceSetDeviceInterfaceStateEx를 호출할 수 있습니다.
디바이스가 이미 시작된 후 드라이버가 이 함수를 호출하는 경우 인터페이스는 비활성화된 상태로 유지됩니다. 드라이버는 WdfDeviceSetDeviceInterfaceState를 적절하게 호출할 수 있습니다.
드라이버는 ReferenceString 매개 변수를 사용하여 단일 인터페이스의 여러 인스턴스를 구분할 수 있습니다. 즉, 드라이버가 동일한 디바이스 인터페이스 클래스에 대해 WdfDeviceCreateDeviceInterface 를 두 번 호출하는 경우 드라이버는 매번 다른 ReferenceString 매개 변수를 지정할 수 있습니다. 인터페이스의 instance 열리면 I/O 관리자가 instance 참조 문자열을 드라이버에 전달합니다. 참조 문자열은 인터페이스 instance 이름의 경로 구성 요소에 추가됩니다. 그런 다음 드라이버는 참조 문자열을 사용하여 열려 있는 디바이스 인터페이스 클래스의 instance 확인할 수 있습니다.
디바이스 인터페이스 및 WdfDeviceCreateDeviceInterface 메서드에 대한 자세한 내용은 디바이스 인터페이스 사용을 참조하세요.
예제
다음 예제에서는 디바이스에 대한 COM 포트 인터페이스 클래스를 등록합니다.
NTSTATUS status;
status = WdfDeviceCreateDeviceInterface(
Device,
(LPGUID) &GUID_DEVINTERFACE_COMPORT,
NULL
);
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
최소 KMDF 버전 | 1.0 |
최소 UMDF 버전 | 2.0 |
머리글 | wdfdevice.h(Wdf.h 포함) |
라이브러리 | Wdf01000.sys(KMDF); WUDFx02000.dll(UMDF) |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |