다음을 통해 공유


WMI 등록 플래그

드라이버는 블록이 정적 또는 동적 instance 이름을 사용하는지 여부를 나타내며 블록을 등록하기 위해 WMI에 전달하는 WMIGUIDREGINFO 또는 WMIREGGUID 구조체에서 플래그를 설정하여 블록의 다른 특성을 지정합니다.

드라이버는 블록이 다음 플래그 중 하나를 설정하여 정적 instance 이름을 사용한다는 것을 나타냅니다.

  • WMIREG_FLAG_INSTANCE_LIST 드라이버가 정적 목록의 모든 instance 이름을 제공했음을 나타냅니다.

    드라이버는 WmiSystemControl을 호출하지 않고 IRP_MN_REGINFO 또는 IRP_MN_REGINFO_EX 요청을 처리하여 블록을 등록하는 경우에만 이 플래그를 설정할 수 있습니다. 드라이버는 블록의 WMIREGGUID 구조에서 InstanceNameList로 표시된 바이트 오프셋에 instance 이름 문자열을 씁니다.

  • WMIREG_FLAG_INSTANCE_BASENAME 드라이버 정의 기본 이름 문자열에서 정적 instance 이름을 생성하도록 WMI에 지시합니다.

    IRP_MN_REGINFO 또는 IRP_MN_REGINFO_EX 요청을 처리하는 드라이버는 블록의 WMIREGGUID 구조에서 BaseNameOffset으로 표시된 오프셋에 기본 이름 문자열을 씁니다.

    WmiSystemControl을 호출하는 드라이버는 DpWmiQueryReginfo 루틴의 InstanceName 매개 변수에 기본 이름 문자열을 지정합니다.

  • WMIREG_FLAG_INSTANCE_PDO 드라이버 PDO의 디바이스 instance ID에서 정적 instance 이름을 생성하도록 WMI에 지시합니다.

    IRP_MN_REGINFO 또는 IRP_MN_REGINFO_EX 요청을 처리하는 드라이버는 블록의 WMIREGGUID 구조체의 Pdo 멤버에서 PDO에 대한 포인터를 씁니다. 요청이 IRP_MN_REGINFO_EX 경우 드라이버는 ObReferenceObject 루틴을 호출하여 전달된 각 PDO에 대한 참조 수를 늘려야 합니다. (시스템은 나중에 각 PDO를 역참조합니다.)

    WmiSystemControl을 호출하는 드라이버는 DpWmiQueryReginfo 루틴의 Pdo 매개 변수에서 PDO에 대한 포인터를 씁니다.

블록이 동적 instance 이름을 사용함을 나타내기 위해 드라이버는 WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_PDO 또는 WMIREG_FLAG_INSTANCE_BASENAME 플래그를 설정하지 않아야 합니다.

드라이버는 데이터 블록이 WMIREG_FLAG_EXPENSIVE 설정하여 수집하는 데 비용이 많이 든다는 것을 나타냅니다. 이렇게 하면 WMI 클라이언트가 처음으로 데이터 블록을 열 때 IRP_MN_ENABLE_COLLECTION 요청을 보내고 마지막 WMI 클라이언트가 블록을 닫을 때 IRP_MN_DISABLE_COLLECTION 요청을 보내도록 WMI에 지시합니다. 드라이버는 IRP_MN_ENABLE_COLLECTION 요청을 받을 때까지 이러한 블록에 대한 데이터를 수집할 필요가 없습니다.

드라이버는 WMIREG_FLAG_EVENT_ONLY_GUID 설정하여 이벤트 블록을 나타냅니다. 이는 블록을 이벤트로만 사용하거나 사용하지 않도록 설정할 수 있으며 쿼리하거나 설정할 수 없음을 나타냅니다.

드라이버는 WMIREG_FLAG_REMOVE_GUID 설정하여 이전에 등록된 블록을 제거하도록 WMI에 지시합니다. 이 플래그는 등록 정보 업데이트 요청에 대한 응답으로만 유효합니다(IRP_MN_REGINFO 또는 WMIUPDATE 를 사용하여 IRP_MN_REGINFO_EX ). 자세한 내용은 WMI 등록 정보 업데이트를 참조하세요.