444 lines
9.1 KiB
C
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
|
|
|