IoGetDeviceProperty 함수(wdm.h)
IoGetDeviceProperty 루틴은 구성 정보 및 해당 PDO의 이름과 같은 디바이스에 대한 정보를 검색합니다.
통사론
NTSTATUS IoGetDeviceProperty(
[in] PDEVICE_OBJECT DeviceObject,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] ULONG BufferLength,
[out, optional] PVOID PropertyBuffer,
[out] PULONG ResultLength
);
매개 변수
[in] DeviceObject
쿼리 중인 디바이스에 대한 PDO(물리적 디바이스 개체)에 대한 포인터입니다.
[in] DeviceProperty
검색할 디바이스 속성을 식별하는 DEVICE_REGISTRY_PROPERTY형식의 열거자입니다.
[in] BufferLength
호출자가 제공한 PropertyBuffer크기(바이트)를 지정합니다.
[out, optional] PropertyBuffer
속성 정보를 받을 호출자 제공 버퍼에 대한 포인터입니다. 버퍼는 페이징 가능한 메모리에서 할당할 수 있습니다. 버퍼의 형식은 DeviceProperty 의해 결정됩니다(위 참조).
[out] ResultLength
PropertyBuffer반환된 속성 정보의 크기를 받는 ULONG에 대한 포인터입니다. IoGetDeviceProperty STATUS_BUFFER_TOO_SMALL 반환하는 경우 이 매개 변수를 필요한 버퍼 길이로 설정합니다.
반환 값
IoGetDeviceProperty 호출에 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값은 다음과 같습니다.
반환 코드 | 묘사 |
---|---|
STATUS_BUFFER_TOO_SMALL | PropertyBuffer 버퍼가 너무 작습니다. ResultLength 필요한 버퍼 길이를 가리킵니다. |
STATUS_INVALID_PARAMETER_2 | 지정된 DeviceProperty 이 루틴에서 처리하는 속성 중 하나가 아닙니다. |
STATUS_INVALID_DEVICE_REQUEST | 지정된 DeviceObject 유효한 PDO 포인터가 아님을 나타냅니다. |
발언
IoGetDeviceProperty 레지스트리에서 디바이스 설정 정보를 검색합니다. 레지스트리에 직접 액세스하는 대신 이 루틴을 사용하여 플랫폼 간 차이와 레지스트리 구조의 가능한 변경으로부터 드라이버를 격리합니다.
많은 DeviceProperty 요청의 경우 IoGetDeviceProperty 두 개 이상의 호출을 수행하여 필요한 BufferLength확인할 수 있습니다. 첫 번째 호출은 가장 적합한 값을 사용해야 합니다. 반환 상태가 STATUS_BUFFER_TOO_SMALL 경우 드라이버는 현재 버퍼를 해제하고, resultLength 반환된 크기의 버퍼를 할당하고, IoGetDeviceProperty 다시 호출해야 합니다. 일부 설정 속성은 동적이므로 필요한 크기가 반환되는 시간 사이에 데이터 크기가 변경되고 드라이버가 이 루틴을 다시 호출할 수 있습니다. 따라서 드라이버는 반환 상태가 STATUS_BUFFER_TOO_SMALL 않을 때까지 실행되는 루프 내에서 IoGetDeviceProperty 호출해야 합니다.
레거시 버스 및 PnP 버스에서 디바이스를 지원하는 함수 드라이버는 DevicePropertyBusNumber, DevicePropertyBusTypeGuid및 DevicePropertyLegacyBusType 속성을 사용하여 버스를 구분할 수 있습니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |