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

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

pszzHardwareIds

소프트웨어 디바이스에 하드웨어 ID에 대한 문자열 목록입니다. 이 값은 IRP_MN_QUERY_IDBusQueryHardwareIDs사용됩니다. 클라이언트가 디바이스에 드라이버 패키지를 설치해야 하는 경우 클라이언트는 하드웨어 ID를 지정해야 합니다.

pszzCompatibleIds

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

pContainerId

소프트웨어 디바이스의 기본 컨테이너 ID를 제어하는 데 사용되는 값입니다. 이 값은 IRP_MN_QUERY_IDBusQueryContainerIDs사용됩니다. 일반적인 상황에서는 이 멤버를 NULL 설정하고 SWDeviceCapabilitiesRemovable 플래그를 사용하여 디바이스가 부모의 컨테이너 ID를 상속하는지 또는 PnP가 새 임의 컨테이너 ID를 할당하는지 여부를 제어하는 것이 좋습니다. 디바이스의 컨테이너 ID 할당에 미치는 영향에 대한 자세한 내용은 이동식 디바이스 기능 개요를 참조하세요. 클라이언트가 컨테이너 ID를 명시적으로 제어해야 하는 경우 이 멤버가 가리키는 변수에 GUID 지정합니다. 일반적으로 컨테이너 ID에 대한 NULL_GUID 지정해서는 안 됩니다. 컨테이너 ID 및 NULL_GUID 특별한 의미에 대한 자세한 내용은 컨테이너 ID 개요를 참조하세요.

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 중 하나 이상을 채워야 합니다.

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

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

pszDeviceDescription

UI의 디바이스 이름에 대해 표시되는 텍스트가 들어 있는 문자열입니다. 이 값은 DeviceTextDescriptionIRP_MN_QUERY_DEVICE_TEXT사용됩니다.

참고  

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

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

 

pszDeviceLocation

UI의 디바이스 위치에 대해 표시되는 텍스트가 들어 있는 문자열입니다. 이 값은 DeviceTextLocationInformationIRP_MN_QUERY_DEVICE_TEXT사용됩니다.

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

pSecurityDescriptor

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

발언

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

요구 사항

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

참고 항목

SwDeviceCreate