📄 setupapi.h
字号:
/*++
Copyright (c) 1995-1999 Microsoft Corporation
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
//
// Define API decoration for direct importing of DLL references.
//
#if !defined(_SETUPAPI_)
#define WINSETUPAPI DECLSPEC_IMPORT
#else
#define WINSETUPAPI
#endif
#ifndef __LPGUID_DEFINED__
#define __LPGUID_DEFINED__
typedef GUID *LPGUID;
#endif
#if defined(_WIN64)
typedef unsigned __int64 ULONG_PTR;
#else
typedef unsigned long ULONG_PTR;
#endif
typedef ULONG_PTR DWORD_PTR;
//
// Include commctrl.h for our use of HIMAGELIST and wizard support.
//
#include <commctrl.h>
#include <pshpack1.h> // Assume byte packing throughout
#ifdef __cplusplus
extern "C" {
#endif
//
// Define maximum string length constants as specified by
// Windows 95.
//
#define LINE_LEN 256 // Win95-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_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 {
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_ALPHA, PROCESSOR_ARCHITECTURE_IA64, or
// PROCESSOR_ARCHITECTURE_ALPHA64)
//
WORD ProcessorArchitecture;
WORD Reserved; // must be zero.
} SP_ALTPLATFORM_INFO, *PSP_ALTPLATFORM_INFO;
//
// 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 0x00000001 // winnt 3.x
#define INF_STYLE_WIN4 0x00000002 // Win95
//
// Additional InfStyle flags that may be specified when calling SetupOpenInfFile.
//
//
#define INF_STYLE_CACHE_ENABLE 0x00000010 // always cache INF, even outside of %windir%\Inf
#define INF_STYLE_CACHE_DISABLE 0x00000020 // delete cached INF information
//
// Target directory specs.
//
#define DIRID_ABSOLUTE -1 // real 32-bit -1
#define DIRID_ABSOLUTE_16BIT 0xffff // 16-bit -1 for compat w/setupx
#define DIRID_NULL 0
#define DIRID_SRCPATH 1
#define DIRID_WINDOWS 10
#define DIRID_SYSTEM 11 // system32
#define DIRID_DRIVERS 12
#define DIRID_IOSUBSYS DIRID_DRIVERS
#define DIRID_INF 17
#define DIRID_HELP 18
#define DIRID_FONTS 20
#define DIRID_VIEWERS 21
#define DIRID_COLOR 23
#define DIRID_APPS 24
#define DIRID_SHARED 25
#define DIRID_BOOT 30
#define DIRID_SYSTEM16 50
#define DIRID_SPOOL 51
#define DIRID_SPOOLDRIVERS 52
#define DIRID_USERPROFILE 53
#define DIRID_LOADER 54
#define DIRID_PRINTPROCESSOR 55
#define DIRID_DEFAULT DIRID_SYSTEM
//
// The following DIRIDs are for commonly-used shell "special folders". The
// complete list of such folders is contained in shlobj.h. In that headerfile,
// each folder is assigned a CSIDL_* value. The DIRID values below are created
// by taking the CSIDL value in shlobj.h and OR'ing it with 0x4000. Thus, if
// an INF needs to reference other special folders not defined below, it may
// generate one using the above mechanism, and setupapi will automatically deal
// with it and use the corresponding shell's path where appropriate. (Remember
// that DIRIDs must be specified in decimal, not hex, in an INF when used for
// string substitution.)
//
#define DIRID_COMMON_STARTMENU 16406 // All Users\Start Menu
#define DIRID_COMMON_PROGRAMS 16407 // All Users\Start Menu\Programs
#define DIRID_COMMON_STARTUP 16408 // All Users\Start Menu\Programs\Startup
#define DIRID_COMMON_DESKTOPDIRECTORY 16409 // All Users\Desktop
#define DIRID_COMMON_FAVORITES 16415 // All Users\Favorites
#define DIRID_COMMON_APPDATA 16419 // All Users\Application Data
#define DIRID_PROGRAM_FILES 16422 // Program Files
#define DIRID_SYSTEM_X86 16425 // system32 on RISC
#define DIRID_PROGRAM_FILES_X86 16426 // Program Files on RISC
#define DIRID_PROGRAM_FILES_COMMON 16427 // Program Files\Common
#define DIRID_PROGRAM_FILES_COMMONX86 16428 // x86 Program Files\Common on RISC
#define DIRID_COMMON_TEMPLATES 16429 // All Users\Templates
#define DIRID_COMMON_DOCUMENTS 16430 // All Users\Documents
//
// First user-definable dirid. See SetupSetDirectoryId().
//
#define DIRID_USER 0x8000
//
// Setup callback notification routine type
//
typedef UINT (CALLBACK* PSP_FILE_CALLBACK_A)(
IN PVOID Context,
IN UINT Notification,
IN UINT_PTR Param1,
IN UINT_PTR Param2
);
typedef UINT (CALLBACK* PSP_FILE_CALLBACK_W)(
IN PVOID Context,
IN UINT Notification,
IN UINT_PTR Param1,
IN UINT_PTR Param2
);
#ifdef UNICODE
#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_W
#else
#define PSP_FILE_CALLBACK PSP_FILE_CALLBACK_A
#endif
//
// Operation/queue start/end notification. These are ordinal values.
//
#define SPFILENOTIFY_STARTQUEUE 0x00000001
#define SPFILENOTIFY_ENDQUEUE 0x00000002
#define SPFILENOTIFY_STARTSUBQUEUE 0x00000003
#define SPFILENOTIFY_ENDSUBQUEUE 0x00000004
#define SPFILENOTIFY_STARTDELETE 0x00000005
#define SPFILENOTIFY_ENDDELETE 0x00000006
#define SPFILENOTIFY_DELETEERROR 0x00000007
#define SPFILENOTIFY_STARTRENAME 0x00000008
#define SPFILENOTIFY_ENDRENAME 0x00000009
#define SPFILENOTIFY_RENAMEERROR 0x0000000a
#define SPFILENOTIFY_STARTCOPY 0x0000000b
#define SPFILENOTIFY_ENDCOPY 0x0000000c
#define SPFILENOTIFY_COPYERROR 0x0000000d
#define SPFILENOTIFY_NEEDMEDIA 0x0000000e
#define SPFILENOTIFY_QUEUESCAN 0x0000000f
//
// These are used with SetupIterateCabinet().
//
#define SPFILENOTIFY_CABINETINFO 0x00000010
#define SPFILENOTIFY_FILEINCABINET 0x00000011
#define SPFILENOTIFY_NEEDNEWCABINET 0x00000012
#define SPFILENOTIFY_FILEEXTRACTED 0x00000013
#define SPFILENOTIFY_FILEOPDELAYED 0x00000014
//
// These are used for backup operations
//
#define SPFILENOTIFY_STARTBACKUP 0x00000015
#define SPFILENOTIFY_BACKUPERROR 0x00000016
#define SPFILENOTIFY_ENDBACKUP 0x00000017
//
// Extended notification for SetupScanFileQueue(Flags=SPQ_SCAN_USE_CALLBACKEX)
//
#define SPFILENOTIFY_QUEUESCAN_EX 0x00000018
//
// Copy notification. These are bit flags that may be combined.
//
#define SPFILENOTIFY_LANGMISMATCH 0x00010000
#define SPFILENOTIFY_TARGETEXISTS 0x00020000
#define SPFILENOTIFY_TARGETNEWER 0x00040000
//
// File operation codes and callback outcomes.
//
#define FILEOP_COPY 0
#define FILEOP_RENAME 1
#define FILEOP_DELETE 2
#define FILEOP_BACKUP 3
#define FILEOP_ABORT 0
#define FILEOP_DOIT 1
#define FILEOP_SKIP 2
#define FILEOP_RETRY FILEOP_DOIT
#define FILEOP_NEWPATH 4
//
// Flags in inf copy sections
//
#define COPYFLG_WARN_IF_SKIP 0x00000001 // warn if user tries to skip file
#define COPYFLG_NOSKIP 0x00000002 // disallow skipping this file
#define COPYFLG_NOVERSIONCHECK 0x00000004 // ignore versions and overwrite target
#define COPYFLG_FORCE_FILE_IN_USE 0x00000008 // force file-in-use behavior
#define COPYFLG_NO_OVERWRITE 0x00000010 // do not copy if file exists on target
#define COPYFLG_NO_VERSION_DIALOG 0x00000020 // do not copy if target is newer
#define COPYFLG_OVERWRITE_OLDER_ONLY 0x00000040 // leave target alone if version same as source
#define COPYFLG_REPLACEONLY 0x00000400 // copy only if file exists on target
#define COPYFLG_NODECOMP 0x00000800 // don't attempt to decompress file; copy as-is
#define COPYFLG_REPLACE_BOOT_FILE 0x00001000 // file must be present upon reboot (i.e., it's
// needed by the loader); this flag implies a reboot
#define COPYFLG_NOPRUNE 0x00002000 // never prune this file
//
// Flags in inf delete sections
// New flags go in high word
//
#define DELFLG_IN_USE 0x00000001 // queue in-use file for delete
#define DELFLG_IN_USE1 0x00010000 // high-word version of DELFLG_IN_USE
//
// Source and file paths. Used when notifying queue callback
// of SPFILENOTIFY_STARTxxx, SPFILENOTIFY_ENDxxx, and SPFILENOTIFY_xxxERROR.
//
typedef struct _FILEPATHS_A {
PCSTR Target;
PCSTR Source; // not used for delete operations
UINT Win32Error;
DWORD Flags; // such as SP_COPY_NOSKIP for copy errors
} FILEPATHS_A, *PFILEPATHS_A;
typedef struct _FILEPATHS_W {
PCWSTR Target;
PCWSTR Source; // not used for delete operations
UINT Win32Error;
DWORD Flags; // such as SP_COPY_NOSKIP for copy errors
} FILEPATHS_W, *PFILEPATHS_W;
#ifdef UNICODE
typedef FILEPATHS_W FILEPATHS;
typedef PFILEPATHS_W PFILEPATHS;
#else
typedef FILEPATHS_A FILEPATHS;
typedef PFILEPATHS_A PFILEPATHS;
#endif
//
// Structure used with SPFILENOTIFY_NEEDMEDIA
//
typedef struct _SOURCE_MEDIA_A {
PCSTR Reserved;
PCSTR Tagfile; // may be NULL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -