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
등록하거나 업데이트할 블록의 특성을 나타냅니다.
블록이 정적 instance 이름으로 등록되는 경우 드라이버는 다음 플래그 중 하나를 설정합니다.
WMIREG_FLAG_INSTANCE_LIST
드라이버가 IrpStack-Parameters.WMI.Buffer>의 버퍼에 있는 WMIREGINFO 구조에 따라 정적 목록에서 이 블록에 대한 정적 instance 이름을 제공했음을 나타냅니다. 이 플래그를 설정하면 InstanceNameList는 이 WMIREGGUID를 포함하는 WMIREGINFO 구조체의 시작부터 연속된 InstanceCount 개수 유니코드 문자열 시리즈까지의 오프셋(바이트)입니다.
WMIREG_FLAG_INSTANCE_BASENAME
IrpStack-Parameters.WMI.Buffer>의 버퍼에 있는 WMIREGINFO 구조 다음에 드라이버가 제공한 기본 이름에서 정적 instance 이름을 생성하도록 WMI에 요청합니다. WMI는 기본 이름에 카운터를 추가하여 instance 이름을 생성합니다. 이 플래그를 설정하면 BaseNameOffset은 이 WMIREGGUID를 포함하는 WMIREGINFO 구조체의 시작부터 기본 이름으로 사용되는 계산된 단일 유니코드 문자열까지의 오프셋(바이트)입니다.
WMIREG_FLAG_INSTANCE_PDO
PDO에 대한 디바이스 instance ID에서 정적 instance 이름을 생성하도록 WMI에 요청합니다. 이 플래그가 설정되면 InstanceInfo 는 드라이버의 AddDevice 루틴에 전달된 PDO를 가리킵니다. WMI는 PDO의 디바이스 instance 경로에서 instance 이름을 생성합니다. 이러한 이름은 고유하게 보장되므로 디바이스 instance 경로를 정적 instance 이름의 기반으로 사용하는 것이 효율적입니다. WMI는 데이터 소비자가 쿼리할 수 있는 데이터 블록의 항목으로 instance "친숙한" 이름을 자동으로 제공합니다.
블록이 동적 instance 이름으로 등록되는 경우 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
이 블록에 대해 정의할 정적 instance 이름의 수를 지정합니다. 블록이 동적 instance 이름으로 등록되는 경우 WMI는 InstanceCount를 무시합니다.
DUMMYUNIONNAME
DUMMYUNIONNAME.InstanceNameList
이 WMIREGGUID를 포함하는 WMIREGINFO 구조체의 시작부터 연속된 InstanceCount 개수 유니코드 문자열 시리즈까지의 오프셋(바이트)을 나타냅니다. 이 멤버는 WMIREG_FLAG_INSTANCE_LIST 플래그에 설정된 경우에만 유효합니다. 블록이 동적 instance 이름으로 등록되는 경우 WMI는 InstanceNameList를 무시합니다.
DUMMYUNIONNAME.BaseNameOffset
이 WMIREGGUID를 포함하는 WMIREGINFO 구조체의 시작부터 정적 instance 이름을 생성하는 WMI의 기본 역할을 하는 계산된 단일 유니코드 문자열까지의 오프셋(바이트)을 나타냅니다. 이 멤버는 WMIREG_FLAG_INSTANCE_BASENAME 플래그에 설정된 경우에만 유효합니다. 블록이 동적 instance 이름으로 등록되는 경우 WMI는 BaseNameOffset을 무시합니다.
DUMMYUNIONNAME.Pdo
드라이버의 AddDevice 루틴에 전달된 PDO(물리적 디바이스 개체)에 대한 포인터입니다. WMI는 이 PDO의 디바이스 instance 경로를 기본으로 사용하여 정적 instance 이름을 생성합니다. 이 멤버는 WMIREG_FLAG_INSTANCE_PDO 플래그에 설정된 경우에만 유효합니다. 블록이 동적 instance 이름으로 등록되는 경우 WMI는 Pdo를 무시합니다.
DUMMYUNIONNAME.InstanceInfo
WMI에서 사용하도록 예약되었습니다.
설명
드라이버는 블록을 등록하거나 업데이트하는 IRP_MN_REGINFO 또는 IRP_MN_REGINFO_EX 요청에 대한 응답으로 하나 이상의 WMIREGGUID 구조를 빌드합니다. 드라이버는 드라이버가 IrpStack-Parameters.WMI.Buffer의 버퍼에 쓰는 WMIREGINFO 구조체의 WmiRegGuid 멤버에서 이러한 구조체의> 배열을 전달합니다.
드라이버는 정적 또는 동적 instance 이름으로 블록을 등록하거나 업데이트할 수 있습니다. 정적 instance 이름은 최상의 성능을 제공하지만 인스턴스 또는 instance 이름 수가 자주 변경되는 경우 데이터 블록에 동적 instance 이름이 선호됩니다. instance 이름에 대한 자세한 내용은 WMI 인스턴스 이름 정의를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | wmistr.h(Wmistr.h 포함) |