다음을 통해 공유


SetupAPI 사용에 대한 지침

다음은 SetupAPI에서 제공하는 일반 설치 함수(설정 Xxx) 및 디바이스 설치 함수(SetupDiXxx)를 사용하기 위한 지침입니다.

  • 설치 파일 콘텐츠가 오류가 없거나 제공한 설치 파일이 악의적으로 수정되지 않았다고 가정하지 마세요. 따라서 항상 SetupAPI 함수에서 받은 모든 정보의 유효성을 검사합니다. 문자열이 유효한 길이이고, 버퍼가 유효한 크기이고, 인덱스 값이 유효한 범위 내에 있는지 확인합니다.

  • Microsoft Windows XP 이상 시스템에서 설치용 설치 애플리케이션을 작성할 때 SetupVerifyInfFile (Windows SDK 설명서에 설명됨)을 호출하여 디지털 서명된 INF 파일이 수정되지 않은 것을 확인할 수 있습니다.

  • 항상 각 SetupAPI 함수의 반환 값을 테스트합니다. 함수가 실패하면 코드에서 GetLastError 를 호출하여 오류를 식별하는 오류 코드를 가져와야 합니다. 반환된 오류 코드는 Winerror.h 또는 Setupapi.h에서 정의할 수 있습니다. FORMAT_MESSAGE_FROM_SYSTEM FormatMessage 를 호출하여 텍스트 표시를 만들기 전에 항상 HRESULT_FROM_SETUPAPI 매크로( Winerror.h에 정의됨)를 사용하여 반환 값을 HRESULT 값으로 변환합니다. SetupAPI 함수가 성공적으로 반환되면 코드에서 GetLastError를 호출하면 안 됩니다. ( GetLastErrorFormatMessage 함수는 시스템 오류 코드와 함께 Windows SDK 설명서에 설명되어 있습니다.)

  • SetupAPI 함수가 핸들을 반환하는 경우 코드는 INVALID_HANDLE_VALUE 반환 값에 대해 검사 합니다. 이러한 함수는 NULL을 반환하지 않습니다.

  • 호출자가 버퍼의 필요한 크기를 쿼리할 수 있도록 하는 SetupDiXxx 함수와 설치Xxx 함수 간의 다음 차이점에 유의하세요.

    • SetupDiXxx 함수의 호출자가 이러한 쿼리를 만드는 경우 GetLastError는 항상 ERROR_INSUFFICIENT_BUFFER 반환합니다.

    • SetupXxx 함수의 호출자가 이러한 쿼리를 만드는 경우 GetLastError는 버퍼 길이가 지정되지 않은 경우 NO_ERROR 반환하거나 버퍼가 너무 작게 지정된 경우 ERROR_INSUFFICIENT_BUFFER 반환합니다.