WMIREGGUIDW 구조체(wmistr.h)
WMIREGGUID 구조에는 데이터 블록 또는 이벤트 블록에 대한 새 등록 정보 또는 업데이트된 등록 정보가 포함되어 있습니다.
통사론
typedef struct {
GUID Guid;
ULONG Flags;
ULONG InstanceCount;
union {
ULONG InstanceNameList;
ULONG BaseNameOffset;
ULONG_PTR Pdo;
ULONG_PTR InstanceInfo;
} DUMMYUNIONNAME;
} WMIREGGUIDW, *PWMIREGGUIDW;
회원
Guid
등록하거나 업데이트할 블록을 나타내는 GUID를 지정합니다.
Flags
등록하거나 업데이트할 블록의 특성을 나타냅니다.
블록이 정적 인스턴스 이름으로 등록되는 경우 드라이버는 다음 플래그 중 하나를 설정합니다.
WMIREG_FLAG_INSTANCE_LIST
드라이버가 IrpStack->Parameters.WMI.Buffer버퍼의 WMIREGINFO 구조에 따라 정적 목록에서 이 블록에 대한 정적 인스턴스 이름을 제공했음을 나타냅니다. 이 플래그가 설정되면 InstanceNameList 이 WMIREGGUID 포함하는 WMIREGINFO 구조의 시작부터 연속된 일련의 InstanceCount 계산된 유니코드 문자열까지의 오프셋(바이트)입니다.
WMIREG_FLAG_INSTANCE_BASENAME
IrpStack->Parameters.WMI.Buffer버퍼의 WMIREGINFO 구조에 따라 드라이버가 제공한 기본 이름에서 정적 인스턴스 이름을 생성하도록 WMI에 요청합니다. WMI는 기본 이름에 카운터를 추가하여 인스턴스 이름을 생성합니다. 이 플래그가 설정되면 BaseNameOffset 이 WMIREGGUID 포함하는 WMIREGINFO 구조체의 시작부터 기본 이름으로 사용되는 단일 계산 유니코드 문자열까지의 오프셋(바이트)입니다.
WMIREG_FLAG_INSTANCE_PDO
PDO에 대한 디바이스 인스턴스 ID에서 정적 인스턴스 이름을 생성하도록 WMI에 요청합니다. 이 플래그가 설정되면 InstanceInfo 드라이버의 AddDevice 루틴에 전달된 PDO를 가리킵니다. WMI는 PDO의 디바이스 인스턴스 경로에서 인스턴스 이름을 생성합니다. 이러한 이름은 고유하게 보장되므로 디바이스 인스턴스 경로를 정적 인스턴스 이름의 기반으로 사용하는 것이 효율적입니다. WMI는 데이터 소비자가 쿼리할 수 있는 데이터 블록의 항목으로 인스턴스에 대한 "친숙한" 이름을 자동으로 제공합니다.
블록이 동적 인스턴스 이름으로 등록되는 경우 WMIREG_FLAG_INSTANCE_LIST, WMIREG_FLAG_INSTANCE_BASENAME 및 WMIREG_FLAG_INSTANCE_PDO 명확해야 합니다.
드라이버는 다음 플래그 중 하나 이상을 설정할 수도 있습니다.
WMIREG_FLAG_EVENT_ONLY_GUID
블록은 이벤트로만 사용하거나 사용하지 않도록 설정할 수 있으며 쿼리하거나 설정할 수 없습니다. 이 플래그가 명확하면 블록을 쿼리하거나 설정할 수도 있습니다.
WMIREG_FLAG_EXPENSIVE
데이터 소비자가 데이터 블록을 처음 열 때 WMI에 IRP_MN_ENABLE_COLLECTION 요청을 보내고 마지막 데이터 소비자가 데이터 블록을 닫을 때 IRP_MN_DISABLE_COLLECTION 요청을 보내도록 요청합니다. 데이터 소비자가 블록을 열어 명시적으로 요청할 때까지 드라이버가 데이터를 수집할 필요가 없으므로 이러한 데이터 수집이 성능에 영향을 미치는 경우 이 작업을 수행하는 것이 좋습니다.
WMIREG_FLAG_REMOVE_GUID
이 블록에 대한 지원을 제거하도록 WMI에 요청합니다. 이 플래그는 등록 정보 업데이트 요청(IRP_MN_REGINFO 또는 Parameters.WMI.DataPath WMIUPDATE로 설정된 IRP_MN_REGINFO_EX)에 대한 응답으로만 유효합니다.
WMIREG_FLAG_TRACED_GUID
블록은 로그 파일에만 쓸 수 있으며 evntrace.h에 선언된 사용자 모드 루틴을 통해서만 액세스할 수 있습니다. NT 커널 모드 데이터 공급자만 이 플래그를 설정합니다.
WMIREG_FLAG_TRACE_CONTROL_GUID
GUID는 MOF 파일에서 연결된 추적 GUID를 사용하거나 사용하지 않도록 설정하기 위한 컨트롤 GUID 역할을 합니다. 이 플래그는 WMIREG_FLAG_TRACED_GUID 설정된 경우에만 유효합니다. NT 커널 모드 데이터 공급자만 이 플래그를 설정합니다.
InstanceCount
이 블록에 대해 정의할 정적 인스턴스 이름의 수를 지정합니다. 블록이 동적 인스턴스 이름으로 등록되는 경우 WMI는 InstanceCount무시합니다.
DUMMYUNIONNAME
DUMMYUNIONNAME.InstanceNameList
이 WMIREGGUID 포함하는 WMIREGINFO 구조체의 시작부터 연속된 일련의 InstanceCount 계산된 유니코드 문자열까지의 오프셋을 바이트 단위로 나타냅니다. 이 멤버는 WMIREG_FLAG_INSTANCE_LIST Flags설정된 경우에만 유효합니다. 블록이 동적 인스턴스 이름으로 등록되는 경우 WMI는 InstanceNameList무시합니다.
DUMMYUNIONNAME.BaseNameOffset
이 WMIREGGUID 포함하는 WMIREGINFO 구조체의 시작부터 정적 인스턴스 이름을 생성하는 WMI의 기본 역할을 하는 단일 계산된 유니코드 문자열에 대한 오프셋(바이트)을 나타냅니다. 이 멤버는 WMIREG_FLAG_INSTANCE_BASENAME Flags설정된 경우에만 유효합니다. 블록이 동적 인스턴스 이름으로 등록되는 경우 WMI는 BaseNameOffset무시합니다.
DUMMYUNIONNAME.Pdo
드라이버의 AddDevice 루틴에 전달된 PDO(물리적 디바이스 개체)에 대한 포인터입니다. WMI는 이 PDO의 디바이스 인스턴스 경로를 정적 인스턴스 이름을 생성하는 기준으로 사용합니다. 이 멤버는 WMIREG_FLAG_INSTANCE_PDO Flags설정된 경우에만 유효합니다. 블록이 동적 인스턴스 이름으로 등록되는 경우 WMI는 Pdo무시합니다.
DUMMYUNIONNAME.InstanceInfo
WMI에서 사용하도록 예약되었습니다.
발언
드라이버는 블록을 등록하거나 업데이트하는 IRP_MN_REGINFO 또는 IRP_MN_REGINFO_EX 요청에 대한 응답으로 하나 이상의 WMIREGGUID 구조를 빌드합니다. 드라이버는 WMIREGINFO 구조체의 WmiRegGuid 멤버에서 이러한 구조의 배열을 전달합니다. 이 멤버는 IrpStack->Parameters.WMI.Buffer버퍼에 씁니다.
드라이버는 정적 또는 동적 인스턴스 이름으로 블록을 등록하거나 업데이트할 수 있습니다. 정적 인스턴스 이름은 최상의 성능을 제공합니다. 그러나 인스턴스 또는 인스턴스 이름 수가 자주 변경되는 경우 데이터 블록에 동적 인스턴스 이름이 선호됩니다. 인스턴스 이름에 대한 자세한 내용은 WMI 인스턴스 이름 정의참조하세요.
요구 사항
요구 | 값 |
---|---|
헤더 | wmistr.h(Wmistr.h 포함) |