/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
setupapi.h
Abstract:
Public header file for Windows NT Setup and Device Installer services Dll.
--*/
#ifndef _INC_SETUPAPI
#define _INC_SETUPAPI
#if _MSC_VER > 1000
#pragma once
#endif
#if defined (_MSC_VER) && (_MSC_VER >= 1200)
#pragma warning(push)
#pragma warning(disable:4201) /* nonstandard extension used : nameless struct/union */
#endif
//
// Define API decoration for direct importing of DLL references.
//
#if !defined(_SETUPAPI_)
#define WINSETUPAPI DECLSPEC_IMPORT
#else
#define WINSETUPAPI
#endif
//
// determine version of setupapi based on _WIN32_WINDOWS and _WIN32_WINNT
//
// NT4 version of setupapi (_WIN32_WINNT_NT4) is earliest, and installed onto Win95 by IE.
// Win2k version of setupapi (_WIN32_WINNT_WIN2K) also shipped in WinME
// we'll use "0x0410" to indicate version of setupapi shipped with Win98
//
#ifndef _SETUPAPI_VER
#if defined(_WIN32_WINNT) && (!defined(_WIN32_WINDOWS) || (_WIN32_WINNT < _WIN32_WINDOWS))
#define _SETUPAPI_VER _WIN32_WINNT // SetupAPI version follows Windows NT version
#elif defined(_WIN32_WINDOWS)
#if _WIN32_WINDOWS >= 0x0490
#define _SETUPAPI_VER _WIN32_WINNT_WIN2K // WinME uses same version of SetupAPI as Win2k
#elif _WIN32_WINDOWS >= 0x0410
#define _SETUPAPI_VER 0x0410 // Indicates version of SetupAPI shipped with Win98
#else
#define _SETUPAPI_VER _WIN32_WINNT_NT4 // Earliest SetupAPI version
#endif // _WIN32_WINDOWS
#else // _WIN32_WINNT/_WIN32_WINDOWS
#define _SETUPAPI_VER _WIN32_WINNT_WINXP
#endif // _WIN32_WINNT/_WIN32_WINDOWS
#endif // !_SETUPAPI_VER
#ifndef __LPGUID_DEFINED__
#define __LPGUID_DEFINED__
typedef GUID *LPGUID;
#endif
//
// Include spapidef.h for basic definitions and flags
//
#include <spapidef.h>
//
// Include commctrl.h for our use of HIMAGELIST and wizard support.
//
#include <commctrl.h>
//
// Include devpropdef.h for our use of DEVPROPERTYKEY and DEVPROPTYPE.
//
#include <devpropdef.h>
#ifdef _WIN64
#include <pshpack8.h> // Assume 8-byte (64-bit) packing throughout
#else
#include <pshpack1.h> // Assume byte packing throughout (32-bit processor)
#endif
#ifdef __cplusplus
extern "C" {
#endif
//
// Define maximum string length constants
//
#define LINE_LEN 256 // Windows 9x-compatible maximum for
// displayable strings coming from a
// device INF.
#define MAX_INF_STRING_LENGTH 4096 // Actual maximum size of an INF string
// (including string substitutions).
#define MAX_INF_SECTION_NAME_LENGTH 255 // For Windows 9x compatibility, INF
// section names should be constrained
// to 32 characters.
#define MAX_TITLE_LEN 60
#define MAX_INSTRUCTION_LEN 256
#define MAX_LABEL_LEN 30
#define MAX_SERVICE_NAME_LEN 256
#define MAX_SUBTITLE_LEN 256
//
// Define maximum length of a machine name in the format expected by ConfigMgr32
// CM_Connect_Machine (i.e., "\\\\MachineName\0").
//
#define SP_MAX_MACHINENAME_LENGTH (MAX_PATH + 3)
//
// Define type for reference to loaded inf file
//
typedef PVOID HINF;
//
// Inf context structure. Applications must not interpret or
// overwrite values in these structures.
//
typedef struct _INFCONTEXT {
PVOID Inf;
PVOID CurrentInf;
UINT Section;
UINT Line;
} INFCONTEXT, *PINFCONTEXT;
//
// Inf file information structure.
//
typedef struct _SP_INF_INFORMATION {
DWORD InfStyle;
DWORD InfCount;
BYTE VersionData[ANYSIZE_ARRAY];
} SP_INF_INFORMATION, *PSP_INF_INFORMATION;
//
// Define structure for passing alternate platform info into
// SetupSetFileQueueAlternatePlatform and SetupQueryInfOriginalFileInformation.
//
typedef struct _SP_ALTPLATFORM_INFO_V2 {
DWORD cbSize;
//
// platform to use (VER_PLATFORM_WIN32_WINDOWS or VER_PLATFORM_WIN32_NT)
//
DWORD Platform;
//
// major and minor version numbers to use
//
DWORD MajorVersion;
DWORD MinorVersion;
//
// processor architecture to use (PROCESSOR_ARCHITECTURE_INTEL,
// PROCESSOR_ARCHITECTURE_AMD64, or PROCESSOR_ARCHITECTURE_IA64.
//
WORD ProcessorArchitecture;
union {
WORD Reserved; // for compatibility with V1 structure
WORD Flags; // indicates validity of non V1 fields
} DUMMYUNIONNAME;
//
// specify SP_ALTPLATFORM_FLAGS_VERSION_RANGE in Flags
// to use FirstValidatedMajorVersion and FirstValidatedMinorVersion
//
// Major and minor versions of the oldest previous OS for which this
// package's digital signature may be considered valid. For example, say
// the alternate platform is VER_PLATFORM_WIN32_NT, version 5.1. However,
// it is wished that driver packages signed with a 5.0 osattr also be
// considered valid. In this case, you'd have a MajorVersion/MinorVersion
// of 5.1, and a FirstValidatedMajorVersion/FirstValidatedMinorVersion of
// 5.0. To validate packages signed for any previous OS release, specify
// 0 for these fields. To only validate against the target alternate
// platform, specify the same values as those in the MajorVersion and
// MinorVersion fields.
//
DWORD FirstValidatedMajorVersion;
DWORD FirstValidatedMinorVersion;
} SP_ALTPLATFORM_INFO_V2, *PSP_ALTPLATFORM_INFO_V2;
typedef struct _SP_ALTPLATFORM_INFO_V1 {
DWORD cbSize;
//
// platform to use (VER_PLATFORM_WIN32_WINDOWS or VER_PLATFORM_WIN32_NT)
//
DWORD Platform;
//
// major and minor version numbers to use
//
DWORD MajorVersion;
DWORD MinorVersion;
//
// processor architecture to use (PROCESSOR_ARCHITECTURE_INTEL,
// PROCESSOR_ARCHITECTURE_AMD64, or PROCESSOR_ARCHITECTURE_IA64.
//
WORD ProcessorArchitecture;
WORD Reserved; // must be zero.
} SP_ALTPLATFORM_INFO_V1, *PSP_ALTPLATFORM_INFO_V1;
#if USE_SP_ALTPLATFORM_INFO_V1 || (_SETUPAPI_VER < _WIN32_WINNT_WINXP) // use version 1 altplatform info data structure
typedef SP_ALTPLATFORM_INFO_V1 SP_ALTPLATFORM_INFO;
typedef PSP_ALTPLATFORM_INFO_V1 PSP_ALTPLATFORM_INFO;
#else // use version 2 altplatform info data structure
typedef SP_ALTPLATFORM_INFO_V2 SP_ALTPLATFORM_INFO;
typedef PSP_ALTPLATFORM_INFO_V2 PSP_ALTPLATFORM_INFO;
//
// the following flags are available to SP_ALTPLATFORM_INFO_V2
//
#define SP_ALTPLATFORM_FLAGS_VERSION_RANGE (0x0001) // FirstValidatedMajor/MinorVersion
#endif // use current version of altplatform info data structure
//
// Define structure that is filled in by SetupQueryInfOriginalFileInformation
// to indicate the INF's original name and the original name of the (potentially
// platform-specific) catalog file specified by that INF.
//
typedef struct _SP_ORIGINAL_FILE_INFO_A {
DWORD cbSize;
CHAR OriginalInfName[MAX_PATH];
CHAR OriginalCatalogName[MAX_PATH];
} SP_ORIGINAL_FILE_INFO_A, *PSP_ORIGINAL_FILE_INFO_A;
typedef struct _SP_ORIGINAL_FILE_INFO_W {
DWORD cbSize;
WCHAR OriginalInfName[MAX_PATH];
WCHAR OriginalCatalogName[MAX_PATH];
} SP_ORIGINAL_FILE_INFO_W, *PSP_ORIGINAL_FILE_INFO_W;
#ifdef UNICODE
typedef SP_ORIGINAL_FILE_INFO_W SP_ORIGINAL_FILE_INFO;
typedef PSP_ORIGINAL_FILE_INFO_W PSP_ORIGINAL_FILE_INFO;
#else
typedef SP_ORIGINAL_FILE_INFO_A SP_ORIGINAL_FILE_INFO;
typedef PSP_ORIGINAL_FILE_INFO_A PSP_ORIGINAL_FILE_INFO;
#endif
//
// SP_INF_INFORMATION.InfStyle values
//
#define INF_STYLE_NONE 0x00000000 // unrecognized or non-existent
#define INF_STYLE_OLDNT
weixin_37566542
- 粉丝: 0
- 资源: 5
最新资源
- 吐鲁番地区实验中学教育管理规章制度(汇编).doc
- 体育教学评课稿.doc
- 外研版小学英语四年级(下册)知识点总结复习资料.doc
- 微观经济学(练习试题2及答案).doc
- 我国上市公司信息披露问题的探究.doc
- 微型计算机控制技术第4章习题答案.doc
- 小学生课外阅读现状分析报告.doc
- 物价知识培训教材.doc
- 新人版小学三年级语文第四单元.doc
- 小学数学作业批改评语集锦.doc
- 学生社会实践活动报告[精选多篇].doc
- 学校食堂自查报告[精选多篇].doc
- 新人版小学五年级上册英语教学计划.doc
- 移动L1认证考试代维传输线路题库一.doc
- 易班知识竞赛题库完整.doc
- 有效教学的三条铁律.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈