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
|
||
|
|