SW_DEVICE_CREATE_INFO 구조체(swdevicedef.h)

PnP가 소프트웨어 디바이스를 만드는 데 사용하는 정보를 설명합니다.

구문

typedef struct _SW_DEVICE_CREATE_INFO {
  ULONG                     cbSize;
  PCWSTR                    pszInstanceId;
  PCZZWSTR                  pszzHardwareIds;
  PCZZWSTR                  pszzCompatibleIds;
  const GUID                *pContainerId;
  ULONG                     CapabilityFlags;
  PCWSTR                    pszDeviceDescription;
  PCWSTR                    pszDeviceLocation;
  const SECURITY_DESCRIPTOR *pSecurityDescriptor;
} SW_DEVICE_CREATE_INFO, *PSW_DEVICE_CREATE_INFO;

멤버

cbSize

이 구조체의 크기(바이트)입니다. 버전 필드로 사용합니다. sizeof(SW_DEVICE_CREATE_INFO)로 초기화합니다.

pszInstanceId

디바이스 instance ID의 instance ID 부분을 나타내는 문자열입니다. 이 값은 IRP_MN_QUERY_IDBusQueryInstanceID에 사용됩니다. 모든 소프트웨어 디바이스는 "UniqueId" 디바이스로 간주되므로 이 문자열은 이 소프트웨어 디바이스 열거자의 모든 디바이스에 대해 고유한 이름이어야 합니다. 자세한 내용은 인스턴스 ID를 참조하세요.

pszzHardwareIds

소프트웨어 디바이스의 하드웨어 ID에 대한 문자열 목록입니다. 이 값은 IRP_MN_QUERY_IDBusQueryHardwareIDs에 사용됩니다. 클라이언트가 드라이버 또는 디바이스 메타데이터를 디바이스에 바인딩해야 하는 경우 클라이언트는 하드웨어 ID를 지정합니다.

pszzCompatibleIds

소프트웨어 디바이스의 호환 ID에 대한 문자열 목록입니다. 이 값은 IRP_MN_QUERY_IDBusQueryCompatibleIDs에 사용됩니다. 클라이언트가 클래스 드라이버를 로드해야 하는 경우 클라이언트는 클래스 드라이버와 일치하는 호환 ID를 지정합니다. 드라이버가 필요하지 않은 경우 호환되는 ID를 지정하여 소프트웨어 디바이스 유형을 분류하는 것이 좋습니다. 이 멤버에 지정된 호환 ID 외에도 SWD\Generic 및 SWD\GenericRaw는 항상 호환되지 않는 최소 ID로 추가됩니다.

pContainerId

소프트웨어 디바이스의 기본 컨테이너 ID를 제어하는 데 사용되는 값입니다. 이 값은 IRP_MN_QUERY_IDBusQueryContainerIDs에 사용됩니다. 일반적인 경우 이 멤버를 NULL 로 설정하고 SWDeviceCapabilitiesRemovable 플래그를 사용하여 디바이스가 부모의 컨테이너 ID를 상속하는지 또는 PnP가 새 임의 컨테이너 ID를 할당하는지 여부를 제어하는 것이 좋습니다. 클라이언트가 컨테이너 ID를 명시적으로 제어해야 하는 경우 이 멤버가 가리키는 변수에 GUID 를 지정합니다.

CapabilityFlags

비트 OR 연산을 사용하여 결합된 SW_DEVICE_CAPABILITIES 값의 조합입니다. 결과 값은 소프트웨어 디바이스의 기능을 지정합니다. 소프트웨어 디바이스를 만들 때 지정할 수 있는 기능은 버스 드라이버가 DEVICE_CAPABILTIES 구조를 사용하여 지정할 수 있는 기능의 하위 집합입니다. 소프트웨어 전용 디바이스에 대한 변경을 허용하는 데 적합한 기능만 지원됩니다. 나머지는 적절한 기본값을 받습니다. 가능한 값은 다음과 같습니다.

의미
SWDeviceCapabilitiesNone
0x00000000
기능이 지정되지 않았습니다.
SWDeviceCapabilitiesRemovable
0x00000001
이 비트는 디바이스를 부모에서 이동식으로 지정합니다. 이 플래그를 설정하는 것은 PDO에 대한 DEVICE_CAPABILTIES 구조체의 이동식 멤버를 설정하는 버스 드라이버와 동일합니다.
SWDeviceCapabilitiesSilentInstall
0x00000002
이 비트는 설치 중에 일반적으로 표시되는 UI를 표시하지 않습니다. 이 플래그를 설정하는 것은 PDO에 대한 DEVICE_CAPABILTIES 구조체의 SilentInstall 멤버를 설정하는 버스 드라이버와 동일합니다.
SWDeviceCapabilitiesNoDisplayInUI
0x00000004
이 비트는 디바이스가 일부 UI에 표시되지 않도록 합니다. 이 플래그를 설정하는 것은 PDO에 대한 DEVICE_CAPABILTIES 구조체의 NoDisplayInUI 멤버를 설정하는 버스 드라이버와 동일합니다.
SWDeviceCapabilitiesDriverRequired
0x00000008
클라이언트가 디바이스에 드라이버를 로드하려고 할 때와 클라이언트 기능의 올바른 기능을 위해 이 드라이버가 필요한 경우 이 비트를 지정합니다.

이 비트를 지정하면 pszzHardwareIds 또는 pszzCompatibleIds 중 하나 이상을 채워야 합니다.

이 비트를 지정하고 드라이버를 찾을 수 없는 경우 디바이스는 장치 관리자 노란색 강타를 표시하여 디바이스에 문제가 있음을 나타내고 문제 해결사에서 이 에 문제가 있는 디바이스로 플래그를 지정합니다. 이 비트를 설정하는 것은 PDO에 대한 DEVICE_CAPABILTIES 구조체의 RawDeviceOK 멤버를 설정하지 않는 버스 드라이버와 동일합니다.

이 비트를 지정하면 드라이버는 디바이스에 대한 인터페이스 만들기를 소유하며 디바이스에 대해 SwDeviceInterfaceRegister 를 호출할 수 없습니다.

pszDeviceDescription

UI의 디바이스 이름에 대해 표시되는 텍스트가 포함된 문자열입니다. 이 값은 IRP_MN_QUERY_DEVICE_TEXTDeviceTextDescription에 사용됩니다.

참고  

INF가 디바이스와 일치하면 이 이름을 유지하기 위한 단계를 수행하지 않는 한 INF의 이름이 이 이름을 재정의합니다.

이 문자열은 지역화 가능한 리소스에 대한 참조가 되는 것이 좋습니다. 리소스 참조 구문은 DEVPROP_TYPE_STRING_INDIRECT 참조하세요.

 

pszDeviceLocation

UI의 디바이스 위치에 대해 표시되는 텍스트가 포함된 문자열입니다. 이 값은 IRP_MN_QUERY_DEVICE_TEXTDeviceTextLocationInformation에 사용됩니다.

참고 위치를 지정하는 것은 일반적이지 않습니다.
 

pSecurityDescriptor

소프트웨어 디바이스와 연결된 보안 정보를 포함하는 SECURITY_DESCRIPTOR 구조체에 대한 포인터입니다. 이 멤버가 NULL인 경우 I/O 관리자는 디바이스에 기본 보안 설명자를 할당합니다. 사용자 지정 보안 설명자가 필요한 경우 자체 상대 보안 설명자를 지정합니다.

설명

만들 때만 이 정보를 지정할 수 있으며 나중에 소프트웨어 디바이스 API를 호출하여 속성을 설정하여 이 정보를 수정할 수 없습니다.

요구 사항

요구 사항
헤더 swdevicedef.h(Swdevice.h 포함)

추가 정보

SwDeviceCreate