windows-nt/Source/XPSP1/NT/base/pnp/setupapi/sputils/strtab.h
2020-09-26 16:20:57 +08:00

175 lines
4.8 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
strtab.h
Abstract:
String table functions in sputils that setupapi needs to know about
but nobody else does
Author:
Jamie Hunter (JamieHun) Jun-27-2000
Revision History:
--*/
#ifdef SPUTILSW
//
// name mangling so the names don't conflict with any in sputilsa.lib
//
#define _pSpUtilsStringTableLookUpString _pSpUtilsStringTableLookUpStringW
#define _pSpUtilsStringTableGetExtraData _pSpUtilsStringTableGetExtraDataW
#define _pSpUtilsStringTableSetExtraData _pSpUtilsStringTableSetExtraDataW
#define _pSpUtilsStringTableAddString _pSpUtilsStringTableAddStringW
#define _pSpUtilsStringTableEnum _pSpUtilsStringTableEnumW
#define _pSpUtilsStringTableStringFromId _pSpUtilsStringTableStringFromIdW
#define _pSpUtilsStringTableTrim _pSpUtilsStringTableTrimW
#define _pSpUtilsStringTableInitialize _pSpUtilsStringTableInitializeW
#define _pSpUtilsStringTableDestroy _pSpUtilsStringTableDestroyW
#define _pSpUtilsStringTableDuplicate _pSpUtilsStringTableDuplicateW
#define _pSpUtilsStringTableInitializeFromMemoryMappedFile _pSpUtilsStringTableInitializeFromMemoryMappedFileW
#define _pSpUtilsStringTableGetDataBlock _pSpUtilsStringTableGetDataBlockW
#define _pSpUtilsStringTableLock _pSpUtilsStringTableLockW
#define _pSpUtilsStringTableUnlock _pSpUtilsStringTableUnlockW
#endif // SPUTILSW
//
// Define an additional private flag for the pStringTable APIs.
// Private flags are added from MSB down; public flags are added
// from LSB up.
//
#define STRTAB_ALREADY_LOWERCASE 0x80000000
//
// Don't change this in a hurry - it requires all INF files to be recompiled
// There might even be other dependencies
//
#define HASH_BUCKET_COUNT 509
//
// Private string table functions that don't do locking. These are
// to be used for optimization purposes by components that already have
// a locking mechanism (e.g., HINF, HDEVINFO).
//
LONG
_pSpUtilsStringTableLookUpString(
IN PVOID StringTable,
IN OUT PTSTR String,
OUT PDWORD StringLength,
OUT PDWORD HashValue, OPTIONAL
OUT PVOID *FindContext, OPTIONAL
IN DWORD Flags,
OUT PVOID ExtraData, OPTIONAL
IN UINT ExtraDataBufferSize OPTIONAL
);
LONG
_pSpUtilsStringTableAddString(
IN PVOID StringTable,
IN OUT PTSTR String,
IN DWORD Flags,
IN PVOID ExtraData, OPTIONAL
IN UINT ExtraDataSize OPTIONAL
);
BOOL
_pSpUtilsStringTableGetExtraData(
IN PVOID StringTable,
IN LONG StringId,
OUT PVOID ExtraData,
IN UINT ExtraDataBufferSize
);
BOOL
_pSpUtilsStringTableSetExtraData(
IN PVOID StringTable,
IN LONG StringId,
IN PVOID ExtraData,
IN UINT ExtraDataSize
);
BOOL
_pSpUtilsStringTableEnum(
IN PVOID StringTable,
OUT PVOID ExtraDataBuffer, OPTIONAL
IN UINT ExtraDataBufferSize, OPTIONAL
IN PSTRTAB_ENUM_ROUTINE Callback,
IN LPARAM lParam OPTIONAL
);
PTSTR
_pSpUtilsStringTableStringFromId(
IN PVOID StringTable,
IN LONG StringId
);
PVOID
_pSpUtilsStringTableDuplicate(
IN PVOID StringTable
);
VOID
_pSpUtilsStringTableDestroy(
IN PVOID StringTable
);
VOID
_pSpUtilsStringTableTrim(
IN PVOID StringTable
);
PVOID
_pSpUtilsStringTableInitialize(
IN UINT ExtraDataSize OPTIONAL
);
DWORD
_pSpUtilsStringTableGetDataBlock(
IN PVOID StringTable,
OUT PVOID *StringTableBlock
);
BOOL
_pSpUtilsStringTableLock(
IN PVOID StringTable
);
VOID
_pSpUtilsStringTableUnlock(
IN PVOID StringTable
);
//
// PNF String table routines
//
PVOID
_pSpUtilsStringTableInitializeFromMemoryMappedFile(
IN PVOID DataBlock,
IN DWORD DataBlockSize,
IN LCID Locale,
IN UINT ExtraDataSize
);
//
// names expected by setupapi (we use the munged names above to stop accidental link errors)
//
#define pStringTableLookUpString _pSpUtilsStringTableLookUpString
#define pStringTableAddString _pSpUtilsStringTableAddString
#define pStringTableGetExtraData _pSpUtilsStringTableGetExtraData
#define pStringTableSetExtraData _pSpUtilsStringTableSetExtraData
#define pStringTableEnum _pSpUtilsStringTableEnum
#define pStringTableStringFromId _pSpUtilsStringTableStringFromId
#define pStringTableDuplicate _pSpUtilsStringTableDuplicate
#define pStringTableDestroy _pSpUtilsStringTableDestroy
#define pStringTableTrim _pSpUtilsStringTableTrim
#define pStringTableInitialize _pSpUtilsStringTableInitialize
#define pStringTableGetDataBlock _pSpUtilsStringTableGetDataBlock
#define InitializeStringTableFromMemoryMappedFile _pSpUtilsStringTableInitializeFromMemoryMappedFile