다음을 통해 공유


SP_DRVINFO_DETAIL_DATA_A 구조체(setupapi.h)

SP_DRVINFO_DETAIL_DATA 구조에는 특정 드라이버 정보 구조에 대한 자세한 정보가 포함됩니다.

통사론

typedef struct _SP_DRVINFO_DETAIL_DATA_A {
  DWORD     cbSize;
  FILETIME  InfDate;
  DWORD     CompatIDsOffset;
  DWORD     CompatIDsLength;
  ULONG_PTR Reserved;
  CHAR      SectionName[LINE_LEN];
  CHAR      InfFileName[MAX_PATH];
  CHAR      DrvDescription[LINE_LEN];
  CHAR      HardwareID[ANYSIZE_ARRAY];
} SP_DRVINFO_DETAIL_DATA_A, *PSP_DRVINFO_DETAIL_DATA_A;

회원

cbSize

SP_DRVINFO_DETAIL_DATA 구조체의 크기(바이트)입니다.

InfDate

이 드라이버에 대한 INF 파일의 날짜입니다.

CompatIDsOffset

CompatIDs 목록이 시작되는 HardwareID 버퍼의 시작 부분부터 문자 단위로 오프셋입니다.

이 값을 사용하여 CompatIDs 목록 앞에 하드웨어 ID 있는지 여부를 확인할 수도 있습니다. 이 값이 1보다 크면 HardwareID 버퍼의 첫 번째 문자열은 하드웨어 ID입니다. 이 값이 1보다 작거나 같으면 하드웨어 ID가 없습니다.

CompatIDsLength

오프셋 CompatIDsOffset부터 시작하는 CompatIDs 목록의 길이(문자 단위)는 HardwareID 버퍼의 시작 부분부터.

CompatIDsLength 0이 아닌 경우 CompatIDs 목록에는 목록 끝에 추가 NULL 문자가 있는 NULL로 끝나는 문자열이 하나 이상 포함됩니다.

CompatIDsLength 0이면 CompatIDs 목록이 비어 있습니다. 이 경우 목록 끝에 추가 NULL 문자가 없습니다.

Reserved

예약. 내부 전용입니다.

SectionName[LINE_LEN]

이 드라이버에 INF DDInstall 섹션의 이름을 포함하는 NULL로 끝나는 문자열입니다. OS/아키텍처별 확장 없이 기본 DDInstall 섹션 이름(예: InstallSec)이어야 합니다.

InfFileName[MAX_PATH]

이 드라이버에 대한 INF 파일의 정규화된 이름을 포함하는 NULL로 끝나는 문자열입니다.

DrvDescription[LINE_LEN]

드라이버를 설명하는 NULL로 끝나는 문자열입니다.

HardwareID[ANYSIZE_ARRAY]

ID 목록(단일 하드웨어 ID호환 ID목록)이 포함된 버퍼입니다. 이러한 ID는 INF 모델 섹션하드웨어 ID 및 호환 ID에 해당합니다.

목록의 각 ID는 NULL로 끝나는 문자열입니다.

하드웨어 ID가 있는 경우(즉, CompatIDsOffset CompatIDsOffset가 1보다 큰 경우) 이 단일 NULL 종료 문자열은 버퍼의 시작 부분에 있습니다.

CompatIDs 목록이 비어 있지 않으면(즉, CompatIDsLength 0이 아닌 경우) CompatIDs 목록은 이 버퍼의 시작 부분에서 오프셋 시작하며 목록 끝에 추가 NULL 문자로 종료됩니다.

발언

디바이스에 대한 하드웨어 ID호환 ID 다음 순서로 INF Models 섹션에 지정됩니다.

  • 첫 번째 ID(지정된 경우)는 디바이스의 하드웨어 ID입니다.
  • 나머지 ID(지정된 경우)는 디바이스에 대해 호환되는 ID입니다.
HardwareID 버퍼를 구문 분석할 때 버퍼에서 데이터의 끝을 올바르게 결정해야 합니다. 버퍼가 반드시 이중 NULL이 종료되는 것은 아닙니다.

예를 들어 INF 모델 섹션하드웨어 ID호환 ID 목록을 지정하는 방법에 따라 HardwareID 버퍼는 다음 중 하나와 유사할 수 있습니다.

  • \0
  • <HWID>\0
  • <HWID>\0<COMPATID_1>\0...<COMPATID_N>\0\0
  • \0<COMPATID_1>\0...<COMPATID_N>\0\0
이 버퍼를 올바르게 구문 분석하는 알고리즘은 다음 코드 예제와 같이 CompatIDsOffsetCompatIDsLength 필드를 사용하여 하드웨어 ID 및 호환 ID추출해야 합니다.
// parse the hardware ID, if it exists
if (CompatIDsOffset > 1)
{
    // Parse for hardware ID from index 0. 
    // This is a single NULL-terminated string
}
 // Parse the compatible IDs, if they exist
if (CompatIDsLength > 0)
{
    // Parse for list of compatible IDs from CompatIDsOffset. 
    // This is a double NULL-terminated list of strings (i.e. MULTI-SZ)
}

메모

setupapi.h 헤더는 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 SP_DRVINFO_DETAIL_DATA 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
헤더 setupapi.h(Setupapi.h 포함)

참고 항목

호환 ID

하드웨어 ID

INF DDInstall 섹션

INF 모델 섹션

setupDiGetDriverInfoDetail