다음을 통해 공유


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, DevicePropertyBusTypeGuidDevicePropertyLegacyBusType 속성을 사용하여 버스를 구분할 수 있습니다.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 보편적
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

참고 항목

CM_RESOURCE_LIST

DEVICE_REMOVAL_POLICY

exAllocatePoolWithTag

GUID

INTERFACE_TYPE

IO_RESOURCE_REQUIREMENTS_LIST