Share via


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 버퍼의 시작부터의 오프셋(문자)입니다.

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

CompatIDsLength

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

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

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

Reserved

예약되어 있습니다. 내부 전용입니다.

SectionName[LINE_LEN]

이 드라이버에 대한 INF DDInstall 섹션 의 이름을 포함하는 NULL로 끝나는 문자열입니다. OS/아키텍처별 확장이 없으면 InstallSec과 같은 기본 DDInstall 섹션 이름이어야 합니다.

InfFileName[MAX_PATH]

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

DrvDescription[LINE_LEN]

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

HardwareID[ANYSIZE_ARRAY]

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

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

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

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

설명

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

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

요구 사항

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

추가 정보

호환 ID

하드웨어 ID

INF DDInstall 섹션

INF 모델 섹션

SetupDiGetDriverInfoDetail