📄 setupx.h
字号:
ERR_DI_NO_DIGITAL_SIGNATURE_CATALOG, // Catalog is not digitally signed
ERR_DI_NO_DIGITAL_SIGNATURE_INF, // Inf is not digitally signed
ERR_DI_NO_DIGITAL_SIGNATURE_FILE, // A file is not digitally signed
};
/*******************************************************************************
* AUTODOC
* @doc EXTERNAL SETUPX DEVICE_INSTALLER
*
* @types DRIVER_INFO | This structure contains the information necessary
* to present the user with a select device dialog.
*
* @field WORD | cbSize | Size of this structure in bytes.
*
* @field struct _DRIVER_INFO FAR | *lpNextInfo | Pointer to the next DRIVER_INFO
* struct in a linked list.
*
* @field LPSTR | lpszDescription | Pointer to the description of the device being
* supported by this driver.
*
* @field LPSTR | lpszMfgName | Pointer to the name of the manufacture of this
* driver.
*
* @field LPSTR | lpszProviderName | Pointer to provider of this driver if the
* lpdi->Flags has the DI_MULTMFGS flag set.
*
* @field WORD | Rank | The Rank match of this driver. Ranks go from 0 to n, where 0
* is the most compatible.
*
* @field DWORD | dwFlags | Flags that control the use of this driver node. These
* are the same as the flags defined for a DRIVER_NODE.
* @flag DNF_DUPDESC | This driver has the same device description
* from by more than one provider.
* @flag DNF_OLDDRIVER | Driver node specifies old/current driver
* @flag DNF_EXCLUDEFROMLIST | If set, this driver node will not be displayed
* in any driver select dialogs.
* @flag DNF_NODRIVER | Set if we want to install no driver e.g no mouse drv
* @flag DNF_CLASS_DRIVER | Set if this driver is in the class driver list
* @flag DNF_COMPATIBLE_DRIVER | Set if this driver is in the compatible driver list
* @flag DNF_INET_DRIVER | Set if this driver is being installed from the Internet
* @flag DNF_CURRENT_DRIVER | Set if this driver is the one currently being used.
* @flag DNF_CLASS_DRIVER | Set if this driver is in the class driver list
* @flag DNF_COMPATIBLE_DRIVER | Set if this driver is in the compatible driver list
* @flag DNF_INET_DRIVER | Set if this driver is being installed from the Internet
* @flag DNF_CURRENT_DRIVER | Set if this driver is the one currently being used.
*
* @field LPARAM | lpReserved | Reserved for use by the Device Installer.
*
* @field DWORD | dwPrivateData | Reserved for use by the Device Installer.
*
*******************************************************************************/
typedef struct _DRIVER_INFO
{
WORD cbSize; // Size of this structure in bytes
struct _DRIVER_INFO FAR* lpNextInfo;
LPSTR lpszDescription;
LPSTR lpszMfgName;
LPSTR lpszProviderName; // ONLY valid if DI_MULTMFGS is set in the LPDI
WORD Rank;
DWORD dwFlags;
LPARAM lpReserved;
DWORD dwPrivateData;
WORD wDate; // Driver Date
LPSTR lpszVersion;
} DRIVER_INFO, *PDRIVER_INFO, FAR *LPDRIVER_INFO;
/*******************************************************************************
* AUTODOC
* @doc EXTERNAL SETUPX DEVICE_INSTALLER
*
* @types DRIVER_NODE | This strucure represents a driver which can be
* installed for a specific device.
*
* @field struct _DRIVER_NODE FAR* | lpNextDN | Pointer to the next driver node
* in a list.
*
* @field UINT | Rank | The Rank match of this driver. Ranks go from 0 to n, where 0
* is the most compatible.
*
* @field UINT | InfType | Type of INF this driver cam from. This will
* be either INFTYPE_TEXT or INFTYPE_EXECUTABLE
*
* @field unsigned | InfDate | DOS date stamp of the INF file.
*
* @field LPSTR | lpszDescription | Pointer to a the descriptrion of the device being
* supported by this driver.
*
* @field LPSTR | lpszSectionName | Pointer to the name of INF install section for
* this driver.
*
* @field ATOM | atInfFileName | Global ATOM containing the name of the INF file.
*
* @field ATOM | atMfgName | Global ATOM containing the name of this driver's
* manufacture.
*
* @field ATOM | atProviderName | Global ATOM containing the name of this driver's
* provider.
*
* @field DWORD | Flags | Flags that control functions using this DRIVER_NODE
* @flag DNF_DUPDESC | This driver has the same device description
* from by more than one provider.
* @flag DNF_OLDDRIVER | Driver node specifies old/current driver
* @flag DNF_EXCLUDEFROMLIST | If set, this driver node will not be displayed
* in any driver select dialogs.
* @flag DNF_NODRIVER | Set if we want to install no driver e.g no mouse drv
* @flag DNF_CONVERTEDLPINFO | Set if this Driver Node was converted from an Info Node.
* Setting this flag will cause the cleanup functions to explicitly delete it.
*
* @field DWORD | dwPrivateData | Reserved
*
* @field LPSTR | lpszDrvDescription | Pointer to a driver description.
*
* @field LPSTR | lpszHardwareID | Pointer to a list of Plug-and-Play hardware IDs for
* this driver.
*
* @field LPSTR | lpszCompatIDs | Pointer to a list of Plug-and-Play compatible IDs for
* this driver.
*
*******************************************************************************/
typedef struct _DRIVER_NODE {
struct _DRIVER_NODE FAR* lpNextDN;
UINT Rank;
UINT InfType;
unsigned InfDate;
LPSTR lpszDescription; // Compatibility: Contains the Device Desc.
LPSTR lpszSectionName;
ATOM atInfFileName;
ATOM atMfgName;
ATOM atProviderName;
DWORD Flags;
DWORD dwPrivateData;
LPSTR lpszDrvDescription; // New contains an driver description
LPSTR lpszHardwareID;
LPSTR lpszCompatIDs;
unsigned DriverDate;
LPSTR lpszInfPath;
LPARAM lpReserved;
} DRIVER_NODE, NEAR* PDRIVER_NODE, FAR* LPDRIVER_NODE, FAR* FAR* LPLPDRIVER_NODE;
#define DNF_DUPDESC 0x00000001 // Multiple providers have same desc
#define DNF_OLDDRIVER 0x00000002 // Driver node specifies old/current driver
#define DNF_EXCLUDEFROMLIST 0x00000004
#define DNF_NODRIVER 0x00000008 // if we want to install no driver e.g no mouse drv
#define DNF_CONVERTEDLPINFO 0x00000010 // Set if the Driver Node is a Converted Info Node
#define DNF_CLASS_DRIVER 0x00000020 // Driver node represents a class driver
#define DNF_COMPATIBLE_DRIVER 0x00000040 // Driver node represents a compatible driver
#define DNF_INET_DRIVER 0x00000080 // Driver comes from an Inetnet source
#define DNF_CURRENT_DRIVER 0x00000100 // Driver is the current one for a device
#define DNF_INDEXED_DRIVER 0x00000200 // Driver is specified in the Windows Driver Index file
#define DNF_DRIVER_VERIFIED 0x00000400 // Driver has been verified
#define DNF_DRIVER_SIGNED 0x00000800 // Driver is digitally signed
#define DNF_WIN2K_SECTION 0x00001000 // Driver install section is Win2000 INF section
// possible types of "INF" files
#define INFTYPE_WIN4 1
#define INFTYPE_WIN3 2
#define INFTYPE_COMBIDRV 3
#define INFTYPE_PPD 4
#define INFTYPE_WPD 5
#define INFTYPE_CLASS_SPEC1 6
#define INFTYPE_CLASS_SPEC2 7
#define INFTYPE_CLASS_SPEC3 8
#define INFTYPE_CLASS_SPEC4 9
#define MAX_CLASS_NAME_LEN 32
#define MAX_DRIVER_INST_LEN 10
#define MAX_GUID_STR 50 // Big enough to hold a GUID string
// NOTE: Keep this in sync with confimg.h in \DDK\INC
#define MAX_DEVNODE_ID_LEN 256
/*******************************************************************************
* AUTODOC
* @doc EXTERNAL SETUPX DEVICE_INSTALLER
*
* @types DEVICE_INFO | This is the basic data structure for most Device
* installation APIs. A DEVICE_INFO represents a device that is being installed
* on the system, or an installed device that is being modified in some way.
*
* @field UINT | cbSize | Size of the DEVICE_INFO struct.
*
* @field struct _DEVICE_INFO FAR | *lpNextDi | Pointer to the next DEVICE_INFO struct
* in a linked list.
*
* @field char | szDescription[LINE_LEN] | Buffer containing the description of the
* device.
*
* @field DWORD | dnDevnode | If set, this contains the address of the DevNode associated
* with the device.
*
* @field HKEY | hRegKey | An opened registry key that contains the device's registry
* subkey. This is usually HKEY_LOCAL_MACHINE.
*
* @field char | szRegSubkey[MAX_DEVNODE_ID_LEN] | Buffer containing the device's
* hardware registry subkey. This is key is rooted in hRegKey, and is ususally some
* place in the \\ENUM branch.
*
* @field char | szClassName[MAX_CLASS_NAME_LEN] | Buffer containing the device's
* class name. (Can be a GUID str)
*
* @field DWORD | Flags | Flags for controlling installation and U/I functions. Some
* flags can be set prior to calling device installer APIs, and other are set
* automatically during the processing of some APIs.
* @flag DI_SHOWOEM | Set if OEM disk support should be allowed
* @flag DI_SHOWCOMPAT | Will be set if only a compatible driver list
* is being displayed by DiSelectDevice.
* @flag DI_SHOWCLASS | Will be set if only a Class driver list is
* is being displayed by DiSelectDevice.
* @flag DI_SHOWALL | Will be set if both a compatible driver list
* and a class driver list are being shown by DiSelectDevice.
* @flag DI_NOVCP | Set if no VCP (Virtual Copy Procedure) is
* desired during DiInstallDevice.
* @flag DI_DIDCOMPAT | Will be set if DiBuildCompatDrvList has been
* done, and lpCompatDrvList points to this device's compatible driver list.
* @flag DI_DIDCLASS | Will be set if DiBuildClassDrvList has been
* done, and lpClassDrvList points to this device's class driver list.
* @flag DI_AUTOASSIGNRES | Unused.
* @flag DI_NEEDRESTART | Will be set if the device requires a restart
* of Windows after installation or a state change.
* @flag DI_NEEDREBOOT | Will be set if the device requires a reboot
* of the machine after installation or a state change.
* @flag DI_NOBROWSE | Set to diable browsing when selecting an OEM
* disk path.
* @flag DI_MULTMFGS | Will be set if a class driver list, or class
* info list contains multiple manufactures.
* @flag DI_DISABLED | Unused.
* @flag DI_GENERALPAGE_ADDED | Set by a property page provider if a general
* properties page has been added to the device's property sheet.
* @flag DI_RESOURCEPAGE_ADDED | Set by a property page provider if a resource
* properties page has been added to the device's property sheet.
* @flag DI_PROPERTIES_CHANGE | Set if a device's properties have been changed
* and require an update of the Device Manager's U/I.
* @flag DI_INF_IS_SORTED | Set if the INF containing drivers for this
* device is in sorted order.
* @flag DI_ENUMSINGLEINF | Set if DiBuildCompatDrvList and
* DiBuildlassDrvList should only search the INF file specificed by atDriverPath.
* @flag DI_DONOTCALLCONFIGMG | Set if the configuration manager should not
* be called during DiInstallDevice.
* @flag DI_INSTALLDISABLED | Set if the device should be installed in a
* disabled state by default.
* @flag DI_CLASSONLY | Set if this DEVICE_INFO struct contains only
* a class name.
* @flag DI_CLASSINSTALLPARAMS | Set if the lpClassIntallParams field points to
* a class install parameter block.
* @flag DI_NODI_DEFAULTACTION | Set if DiCallClassInstaller should not
* perform any default action if the class installer return ERR_DI_DO_DEFAULT, or
* there is not class installer.
* @flag DI_QUIETINSTALL | Set if device install API should be as
* silent as possible using default choices whereever possible.
* @flag DI_NOFILECOPY | Set if DiInstallDevice should skip file
* copying.
* @flag DI_FORCECOPY | Set if DiInstallDevice should always
* copy file, even if they are present on the system.
* @flag DI_DRIVERPAGE_ADDED | Set by a property page provider if a driver
* properties page has been added to the device's property sheet.
* @flag DI_USECI_SELECTSTRINGS | Set if class installer provided strings
* should be used during DiSelectDevice.
* @flag DI_OVERRIDE_INFFLAGS | Unused.
* @flag DI_PROPS_NOCHANGEUSAGE | Set if there should be no Enable/Disable
* capability on the device's general property page.
* @flag DI_NOSELECTICONS | Set if no small icons should be used during
* DiSelectDevice.
* @flag DI_NOWRITE_IDS | Set if DiInstallDevice should not write
* the device's hardware and compatible IDs to the registry.
*
* @field HWND | hwndParent | Window handle that will own U/I dialogs related to this
* device.
*
* @field LPDRIVER_NODE | lpCompatDrvList | Pointer to a linked list of DRIVER_NODES
* representing the compatible drivers for this device.
*
* @field LPDRIVER_NODE | lpClassDrvList | Pointer to a linked list of DRIVER_NODES
* representing all drivers of this device's class.
*
* @field LPDRIVER_NODE | lpSelectedDriver | Pointer to a single DRIVER_NODE that
* has been selected as the driver for this device.
*
* @field ATOM | atDriverPath | Global ATOM containing the path to this device's INF
* file. This is set only of the driver came from an OEM INF file. This will be
* 0 if the INF is a standard Windows INF file.
*
* @field ATOM | atTempInfFile | Global ATOM containing the name of a temporary INF
* file for this device's drivers. This is set if the drivers came from an old style
* INF file and have been converted.
*
* @field HINSTANCE | hinstClassInstaller | Class installer module instance.
*
* @field HINSTANCE | hinstClassPropProvidor | Class Property Providor module instance.
*
* @field HINSTANCE | hinstDevicePropProvidor | Device Property Providor module instance.
*
* @field HINSTANCE |
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -