windows-nt/Source/XPSP1/NT/base/ntsetup/inc/hwdb.h
2020-09-26 16:20:57 +08:00

444 lines
9.1 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
hwcomp.h
Abstract:
Module's interface.
Author:
Ovidiu Temereanca (ovidiut) 04-Jul-2000 Initial implementation
Revision History:
--*/
//
// Interface
//
BOOL
WINAPI
HwdbInitializeA (
IN PCSTR TempDir
);
BOOL
WINAPI
HwdbInitializeW (
IN PCWSTR TempDir
);
VOID
WINAPI
HwdbTerminate (
VOID
);
HANDLE
WINAPI
HwdbOpenA (
IN PCSTR DatabaseFile
);
HANDLE
WINAPI
HwdbOpenW (
IN PCWSTR DatabaseFile
);
VOID
WINAPI
HwdbClose (
IN HANDLE Hwdb
);
typedef
BOOL
(*HWDBAPPENDINFSCALLBACKA) (
IN PVOID Context,
IN PCSTR PnpId,
IN PCSTR ActualInfFilename,
IN PCSTR SourceDir,
IN PCSTR FullInfPath
);
BOOL
WINAPI
HwdbAppendInfsA (
IN HANDLE Hwdb,
IN PCSTR SourceDirectory,
IN HWDBAPPENDINFSCALLBACKA Callback, OPTIONAL
IN PVOID CallbackContext OPTIONAL
);
typedef
BOOL
(*HWDBAPPENDINFSCALLBACKW) (
IN PVOID Context,
IN PCWSTR PnpId,
IN PCWSTR ActualInfFilename,
IN PCWSTR SourceDir,
IN PCWSTR FullInfPath
);
BOOL
WINAPI
HwdbAppendInfsW (
IN HANDLE Hwdb,
IN PCWSTR SourceDirectory,
IN HWDBAPPENDINFSCALLBACKW Callback, OPTIONAL
IN PVOID CallbackContext OPTIONAL
);
BOOL
WINAPI
HwdbAppendDatabase (
IN HANDLE HwdbTarget,
IN HANDLE HwdbSource
);
BOOL
WINAPI
HwdbFlushA (
IN HANDLE Hwdb,
IN PCSTR OutputFile
);
BOOL
WINAPI
HwdbFlushW (
IN HANDLE Hwdb,
IN PCWSTR OutputFile
);
BOOL
WINAPI
HwdbHasDriverA (
IN HANDLE Hwdb,
IN PCSTR PnpId,
OUT PBOOL Unsupported
);
BOOL
WINAPI
HwdbHasDriverW (
IN HANDLE Hwdb,
IN PCWSTR PnpId,
OUT PBOOL Unsupported
);
BOOL
WINAPI
HwdbHasAnyDriverA (
IN HANDLE Hwdb,
IN PCSTR PnpIds,
OUT PBOOL Unsupported
);
BOOL
WINAPI
HwdbHasAnyDriverW (
IN HANDLE Hwdb,
IN PCWSTR PnpIds,
OUT PBOOL Unsupported
);
typedef
BOOL
(WINAPI* PHWDBINITIALIZEA) (
IN PCSTR TempDir
);
typedef
BOOL
(WINAPI* PHWDBINITIALIZEW) (
IN PCWSTR TempDir
);
typedef
VOID
(WINAPI* PHWDBTERMINATE) (
VOID
);
typedef
HANDLE
(WINAPI* PHWDBOPENA) (
IN PCSTR DatabaseFile
);
typedef
HANDLE
(WINAPI* PHWDBOPENW) (
IN PCWSTR DatabaseFile
);
typedef
VOID
(WINAPI* PHWDBCLOSE) (
IN HANDLE Hwdb
);
typedef
BOOL
(WINAPI* PHWDBAPPENDINFSA) (
IN HANDLE Hwdb,
IN PCSTR SourceDirectory,
IN HWDBAPPENDINFSCALLBACKA Callback, OPTIONAL
IN PVOID CallbackContext OPTIONAL
);
typedef
BOOL
(WINAPI* PHWDBAPPENDINFSW) (
IN HANDLE Hwdb,
IN PCWSTR SourceDirectory,
IN HWDBAPPENDINFSCALLBACKW Callback, OPTIONAL
IN PVOID CallbackContext OPTIONAL
);
typedef
BOOL
(WINAPI* PHWDBAPPENDDATABASE) (
IN HANDLE HwdbTarget,
IN HANDLE HwdbSource
);
typedef
BOOL
(WINAPI* PHWDBFLUSHA) (
IN HANDLE Hwdb,
IN PCSTR OutputFile
);
typedef
BOOL
(WINAPI* PHWDBFLUSHW) (
IN HANDLE Hwdb,
IN PCWSTR OutputFile
);
typedef
BOOL
(WINAPI* PHWDBHASDRIVERA) (
IN HANDLE Hwdb,
IN PCSTR PnpId,
OUT PBOOL Unsupported
);
typedef
BOOL
(WINAPI* PHWDBHASDRIVERW) (
IN HANDLE Hwdb,
IN PCWSTR PnpId,
OUT PBOOL Unsupported
);
typedef
BOOL
(WINAPI* PHWDBHASANYDRIVERA) (
IN HANDLE Hwdb,
IN PCSTR PnpId,
OUT PBOOL Unsupported
);
typedef
BOOL
(WINAPI* PHWDBHASANYDRIVERW) (
IN HANDLE Hwdb,
IN PCWSTR PnpId,
OUT PBOOL Unsupported
);
#if 0
typedef
BOOL
(WINAPI* PHWDBENUM_CALLBACKA) (
IN PVOID UserContext,
IN PCSTR PnpId,
IN PCSTR InfFileName
);
typedef
BOOL
(WINAPI* PHWDBENUM_CALLBACKW) (
IN PVOID UserContext,
IN PCWSTR PnpId,
IN PCWSTR InfFileName
);
BOOL
HwdbEnumeratePnpIdA (
IN HANDLE Hwdb,
IN PHWDBENUM_CALLBACKA EnumCallback,
IN PVOID UserContext
);
BOOL
HwdbEnumeratePnpIdW (
IN HANDLE Hwdb,
IN PHWDBENUM_CALLBACKW EnumCallback,
IN PVOID UserContext
);
typedef
BOOL
(WINAPI* PHWDBENUMERATEPNPIDA) (
IN HANDLE Hwdb,
IN PHWDBENUM_CALLBACKA EnumCallback,
IN PVOID UserContext
);
typedef
BOOL
(WINAPI* PHWDBENUMERATEPNPIDW) (
IN HANDLE Hwdb,
IN PHWDBENUM_CALLBACKW EnumCallback,
IN PVOID UserContext
);
#endif
typedef struct {
CHAR InfFile[MAX_PATH];
PCSTR PnpIds;
PVOID Internal;
} HWDBINF_ENUMA, *PHWDBINF_ENUMA;
typedef struct {
PCWSTR InfFile;
PCWSTR PnpIds;
PVOID Internal;
} HWDBINF_ENUMW, *PHWDBINF_ENUMW;
BOOL
HwdbEnumFirstInfA (
OUT PHWDBINF_ENUMA EnumPtr,
IN PCSTR DatabaseFile
);
BOOL
HwdbEnumFirstInfW (
OUT PHWDBINF_ENUMW EnumPtr,
IN PCWSTR DatabaseFile
);
BOOL
HwdbEnumNextInfA (
IN OUT PHWDBINF_ENUMA EnumPtr
);
BOOL
HwdbEnumNextInfW (
IN OUT PHWDBINF_ENUMW EnumPtr
);
VOID
HwdbAbortEnumInfA (
IN OUT PHWDBINF_ENUMA EnumPtr
);
VOID
HwdbAbortEnumInfW (
IN OUT PHWDBINF_ENUMW EnumPtr
);
//
// exported function names
//
#define S_HWDBAPI_HWDBINITIALIZE_A "HwdbInitializeA"
#define S_HWDBAPI_HWDBINITIALIZE_W "HwdbInitializeW"
#define S_HWDBAPI_HWDBTERMINATE "HwdbTerminate"
#define S_HWDBAPI_HWDBOPEN_A "HwdbOpenA"
#define S_HWDBAPI_HWDBOPEN_W "HwdbOpenW"
#define S_HWDBAPI_HWDBCLOSE "HwdbClose"
#define S_HWDBAPI_HWDBAPPENDINFS_A "HwdbAppendInfsA"
#define S_HWDBAPI_HWDBAPPENDINFS_W "HwdbAppendInfsW"
#define S_HWDBAPI_HWDBAPPENDDATABASE "HwdbAppendDatabase"
#define S_HWDBAPI_HWDBFLUSH_A "HwdbFlushA"
#define S_HWDBAPI_HWDBFLUSH_W "HwdbFlushW"
#define S_HWDBAPI_HWDBHASDRIVER_A "HwdbHasDriverA"
#define S_HWDBAPI_HWDBHASDRIVER_W "HwdbHasDriverW"
#define S_HWDBAPI_HWDBHASANYDRIVER_A "HwdbHasAnyDriverA"
#define S_HWDBAPI_HWDBHASANYDRIVER_W "HwdbHasAnyDriverW"
typedef struct {
PHWDBINITIALIZEA HwdbInitialize;
PHWDBTERMINATE HwdbTerminate;
PHWDBOPENA HwdbOpen;
PHWDBCLOSE HwdbClose;
PHWDBAPPENDINFSA HwdbAppendInfs;
PHWDBFLUSHA HwdbFlush;
PHWDBHASDRIVERA HwdbHasDriver;
PHWDBHASANYDRIVERA HwdbHasAnyDriver;
} HWDB_ENTRY_POINTSA, *PHWDB_ENTRY_POINTSA;
typedef struct {
PHWDBINITIALIZEW HwdbInitialize;
PHWDBTERMINATE HwdbTerminate;
PHWDBOPENW HwdbOpen;
PHWDBCLOSE HwdbClose;
PHWDBAPPENDINFSW HwdbAppendInfs;
PHWDBFLUSHW HwdbFlush;
PHWDBHASDRIVERW HwdbHasDriver;
PHWDBHASANYDRIVERW HwdbHasAnyDriver;
} HWDB_ENTRY_POINTSW, *PHWDB_ENTRY_POINTSW;
#ifdef UNICODE
#define S_HWDBAPI_HWDBINITIALIZE S_HWDBAPI_HWDBINITIALIZE_W
#define PHWDBINITIALIZE PHWDBINITIALIZEW
#define S_HWDBAPI_HWDBOPEN S_HWDBAPI_HWDBOPEN_W
#define PHWDBOPEN PHWDBOPENW
#define S_HWDBAPI_HWDBAPPENDINFS S_HWDBAPI_HWDBAPPENDINFS_W
#define PHWDBAPPENDINFS PHWDBAPPENDINFSW
#define S_HWDBAPI_HWDBFLUSH S_HWDBAPI_HWDBFLUSH_W
#define PHWDBFLUSH PHWDBFLUSHW
#define S_HWDBAPI_HWDBHASDRIVER S_HWDBAPI_HWDBHASDRIVER_W
#define PHWDBHASDRIVER PHWDBHASDRIVERW
#define S_HWDBAPI_HWDBHASANYDRIVER S_HWDBAPI_HWDBHASANYDRIVER_W
#define PHWDBHASANYDRIVER PHWDBHASANYDRIVERW
#define HWDBINF_ENUM HWDBINF_ENUMW
#define PHWDBINF_ENUM PHWDBINF_ENUMW
#define HwdbEnumFirstInf HwdbEnumFirstInfW
#define HwdbEnumNextInf HwdbEnumNextInfW
#define HwdbAbortEnumInf HwdbAbortEnumInfW
#define HWDB_ENTRY_POINTS HWDB_ENTRY_POINTSW
#define PHWDB_ENTRY_POINTS PHWDB_ENTRY_POINTSW
#else
#define S_HWDBAPI_HWDBINITIALIZE S_HWDBAPI_HWDBINITIALIZE_A
#define PHWDBINITIALIZE PHWDBINITIALIZEA
#define S_HWDBAPI_HWDBOPEN S_HWDBAPI_HWDBOPEN_A
#define PHWDBOPEN PHWDBOPENA
#define S_HWDBAPI_HWDBAPPENDINFS S_HWDBAPI_HWDBAPPENDINFS_A
#define PHWDBAPPENDINFS PHWDBAPPENDINFSA
#define S_HWDBAPI_HWDBFLUSH S_HWDBAPI_HWDBFLUSH_A
#define PHWDBFLUSH PHWDBFLUSHA
#define S_HWDBAPI_HWDBHASDRIVER S_HWDBAPI_HWDBHASDRIVER_A
#define PHWDBHASDRIVER PHWDBHASDRIVERA
#define S_HWDBAPI_HWDBHASANYDRIVER S_HWDBAPI_HWDBHASANYDRIVER_A
#define PHWDBHASANYDRIVER PHWDBHASANYDRIVERA
#define HWDBINF_ENUM HWDBINF_ENUMA
#define PHWDBINF_ENUM PHWDBINF_ENUMA
#define HwdbEnumFirstInf HwdbEnumFirstInfA
#define HwdbEnumNextInf HwdbEnumNextInfA
#define HwdbAbortEnumInf HwdbAbortEnumInfA
#define HWDB_ENTRY_POINTS HWDB_ENTRY_POINTSA
#define PHWDB_ENTRY_POINTS PHWDB_ENTRY_POINTSA
#endif