You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
259 lines
8.6 KiB
259 lines
8.6 KiB
/*+-------------------------------------------------------------------------
|
|
*
|
|
* Microsoft Windows
|
|
* Copyright (C) Microsoft Corporation, 1992 - 1996.
|
|
*
|
|
* File: propapi.h
|
|
*
|
|
* Contents: Definitions of Nt property api.
|
|
*
|
|
*--------------------------------------------------------------------------*/
|
|
|
|
#ifndef _PROPAPI_H_
|
|
#define _PROPAPI_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**/
|
|
/* typedef the function prototypes necessary*/
|
|
/* for the UNICODECALLOUTS structure.*/
|
|
/**/
|
|
|
|
typedef UINT (WINAPI FNGETACP)(VOID);
|
|
|
|
typedef int (WINAPI FNMULTIBYTETOWIDECHAR)(
|
|
IN UINT CodePage,
|
|
IN DWORD dwFlags,
|
|
IN LPCSTR lpMultiByteStr,
|
|
IN int cchMultiByte,
|
|
OUT LPWSTR lpWideCharStr,
|
|
IN int cchWideChar);
|
|
|
|
typedef int (WINAPI FNWIDECHARTOMULTIBYTE)(
|
|
IN UINT CodePage,
|
|
IN DWORD dwFlags,
|
|
IN LPCWSTR lpWideCharStr,
|
|
IN int cchWideChar,
|
|
OUT LPSTR lpMultiByteStr,
|
|
IN int cchMultiByte,
|
|
IN LPCSTR lpDefaultChar,
|
|
IN LPBOOL lpUsedDefaultChar);
|
|
|
|
typedef STDAPI_(BSTR) FNSYSALLOCSTRING(
|
|
OLECHAR FAR* pwsz);
|
|
|
|
typedef STDAPI_(VOID) FNSYSFREESTRING(
|
|
BSTR pwsz);
|
|
|
|
/**/
|
|
/* The UNICODECALLOUTS structure holds function*/
|
|
/* pointers for routines needed by the property*/
|
|
/* set routines in NTDLL.*/
|
|
/**/
|
|
|
|
typedef struct _UNICODECALLOUTS
|
|
{
|
|
FNGETACP *pfnGetACP;
|
|
FNMULTIBYTETOWIDECHAR *pfnMultiByteToWideChar;
|
|
FNWIDECHARTOMULTIBYTE *pfnWideCharToMultiByte;
|
|
FNSYSALLOCSTRING *pfnSysAllocString;
|
|
FNSYSFREESTRING *pfnSysFreeString;
|
|
} UNICODECALLOUTS;
|
|
|
|
|
|
/**/
|
|
/* Define the default UNICODECALLOUTS*/
|
|
/* values.*/
|
|
/**/
|
|
|
|
#define WIN32_UNICODECALLOUTS \
|
|
GetACP, \
|
|
MultiByteToWideChar, \
|
|
WideCharToMultiByte, \
|
|
SysAllocString, \
|
|
SysFreeString
|
|
|
|
# define PROPSYSAPI
|
|
# define PROPAPI
|
|
|
|
# define PropFreeHeap(h, z, p) CoTaskMemFree(p)
|
|
|
|
# define PROPASSERT assert
|
|
|
|
#define PROPASSERTMSG(szReason, f) assert( (szReason && FALSE) || (f))
|
|
|
|
# define PropSprintfA wsprintfA
|
|
# define PropVsprintfA wvsprintfA
|
|
|
|
#define WC_PROPSET0 ((WCHAR) 0x0005)
|
|
#define OC_PROPSET0 ((OLECHAR) 0x0005)
|
|
|
|
#define CBIT_BYTE 8
|
|
#define CBIT_GUID (CBIT_BYTE * sizeof(GUID))
|
|
#define CBIT_CHARMASK 5
|
|
|
|
/* Allow for OC_PROPSET0 and a GUID mapped to a 32 character alphabet */
|
|
#define CCH_PROPSET (1 + (CBIT_GUID + CBIT_CHARMASK-1)/CBIT_CHARMASK)
|
|
#define CCH_PROPSETSZ (CHC_PROPSET + 1) /* allow null*/
|
|
#define CCH_PROPSETCOLONSZ (1 + CHC_PROPSET + 1) /* allow colon and null*/
|
|
|
|
/* Define the max property name in units of characters
|
|
(and synonomously in wchars). */
|
|
#define CCH_MAXPROPNAME 255 /* Matches Shell &
|
|
Office */
|
|
#define CCH_MAXPROPNAMESZ (CWC_MAXPROPNAME + 1) /* allow null */
|
|
#define CWC_MAXPROPNAME CCH_MAXPROPNAME
|
|
#define CWC_MAXPROPNAMESZ CCH_MAXPROPNAMESZ
|
|
|
|
|
|
/*+--------------------------------------------------------------------------*/
|
|
/* Property Access APIs: */
|
|
/*---------------------------------------------------------------------------*/
|
|
|
|
typedef VOID *NTPROP;
|
|
typedef VOID *NTMAPPEDSTREAM;
|
|
typedef VOID *NTMEMORYALLOCATOR;
|
|
|
|
|
|
VOID PROPSYSAPI PROPAPI
|
|
RtlSetUnicodeCallouts(
|
|
IN UNICODECALLOUTS *pUnicodeCallouts);
|
|
|
|
ULONG PROPSYSAPI PROPAPI
|
|
RtlGuidToPropertySetName(
|
|
IN GUID const *pguid,
|
|
OUT OLECHAR aocname[]);
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlPropertySetNameToGuid(
|
|
IN ULONG cwcname,
|
|
IN OLECHAR const aocname[],
|
|
OUT GUID *pguid);
|
|
|
|
|
|
/* RtlCreatePropertySet Flags:*/
|
|
|
|
#define CREATEPROP_READ 0x0000 /* request read access (must exist)*/
|
|
#define CREATEPROP_WRITE 0x0001 /* request write access (must exist)*/
|
|
#define CREATEPROP_CREATE 0x0002 /* create (overwrite if exists)*/
|
|
#define CREATEPROP_CREATEIF 0x0003 /* create (open existing if exists)*/
|
|
#define CREATEPROP_DELETE 0x0004 /* delete*/
|
|
#define CREATEPROP_MODEMASK 0x000f /* open mode mask*/
|
|
|
|
#define CREATEPROP_NONSIMPLE 0x0010 /* Is non-simple propset (in a storage)*/
|
|
|
|
|
|
/* RtlCreateMappedStream Flags:*/
|
|
|
|
#define CMS_READONLY 0x00000000 /* Opened for read-only*/
|
|
#define CMS_WRITE 0x00000001 /* Opened for write access*/
|
|
#define CMS_TRANSACTED 0x00000002 /* Is transacted*/
|
|
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlCreatePropertySet(
|
|
IN NTMAPPEDSTREAM ms, /* Nt mapped stream*/
|
|
IN USHORT Flags, /* NONSIMPLE|*1* of READ/WRITE/CREATE/CREATEIF/DELETE*/
|
|
OPTIONAL IN GUID const *pguid, /* property set guid (create only)*/
|
|
OPTIONAL IN GUID const *pclsid,/* CLASSID of propset code (create only)*/
|
|
IN NTMEMORYALLOCATOR ma, /* memory allocator of caller*/
|
|
IN ULONG LocaleId, /* Locale Id (create only)*/
|
|
OPTIONAL OUT ULONG *pOSVersion,/* OS Version field in header.*/
|
|
IN OUT USHORT *pCodePage, /* IN: CodePage of property set (create only)*/
|
|
/* OUT: CodePage of property set (always)*/
|
|
OUT NTPROP *pnp); /* Nt property set context*/
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlClosePropertySet(
|
|
IN NTPROP np); /* property set context*/
|
|
|
|
#define CBSTM_UNKNOWN ((ULONG) -1)
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlOnMappedStreamEvent(
|
|
IN VOID *pv, /* property set context */
|
|
IN VOID *pbuf, /* property set buffer */
|
|
IN ULONG cbstm ); /* size of underlying stream or CBSTM_UNKNOWN */
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlFlushPropertySet(
|
|
IN NTPROP np); /* property set context*/
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlSetProperties(
|
|
IN NTPROP np, /* property set context*/
|
|
IN ULONG cprop, /* property count*/
|
|
IN PROPID pidNameFirst, /* first PROPID for new named properties*/
|
|
IN PROPSPEC const aprs[], /* array of property specifiers*/
|
|
OPTIONAL OUT PROPID apid[], /* buffer for array of propids*/
|
|
OPTIONAL IN PROPVARIANT const avar[]);/* array of properties with values*/
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlQueryProperties(
|
|
IN NTPROP np, /* property set context*/
|
|
IN ULONG cprop, /* property count*/
|
|
IN PROPSPEC const aprs[], /* array of property specifiers*/
|
|
OPTIONAL OUT PROPID apid[], /* buffer for array of propids*/
|
|
IN OUT PROPVARIANT *avar, /* IN: array of uninitialized PROPVARIANTs,*/
|
|
/* OUT: may contain pointers to alloc'd memory*/
|
|
OUT ULONG *pcpropFound); /* count of property values retrieved*/
|
|
|
|
|
|
|
|
#define ENUMPROP_NONAMES 0x00000001 /* return property IDs only*/
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlEnumerateProperties(
|
|
IN NTPROP np, /* property set context*/
|
|
IN ULONG Flags, /* flags: No Names (propids only), etc.*/
|
|
IN OUT ULONG *pkey, /* bookmark; caller set to 0 before 1st call*/
|
|
IN OUT ULONG *pcprop, /* pointer to property count*/
|
|
OPTIONAL OUT PROPSPEC aprs[],/* IN: array of uninitialized PROPSPECs*/
|
|
/* OUT: may contain pointers to alloc'd strings*/
|
|
OPTIONAL OUT STATPROPSTG asps[]);
|
|
/* IN: array of uninitialized STATPROPSTGs*/
|
|
/* OUT: may contain pointers to alloc'd strings*/
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlQueryPropertyNames(
|
|
IN NTPROP np, /* property set context*/
|
|
IN ULONG cprop, /* property count*/
|
|
IN PROPID const *apid, /* PROPID array*/
|
|
OUT OLECHAR *apwsz[] /* OUT pointers to allocated strings*/
|
|
);
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlSetPropertyNames(
|
|
IN NTPROP np, /* property set context*/
|
|
IN ULONG cprop, /* property count*/
|
|
IN PROPID const *apid, /* PROPID array*/
|
|
IN OLECHAR const * const apwsz[] /* pointers to property names*/
|
|
);
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlSetPropertySetClassId(
|
|
IN NTPROP np, /* property set context*/
|
|
IN GUID const *pclsid /* new CLASSID of propset code*/
|
|
);
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlQueryPropertySet(
|
|
IN NTPROP np, /* property set context*/
|
|
OUT STATPROPSETSTG *pspss /* buffer for property set stat information*/
|
|
);
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlEnumeratePropertySets(
|
|
IN HANDLE hstg, /* structured storage handle*/
|
|
IN BOOLEAN fRestart, /* restart scan*/
|
|
IN OUT ULONG *pcspss, /* pointer to count of STATPROPSETSTGs*/
|
|
IN OUT GUID *pkey, /* bookmark*/
|
|
OUT STATPROPSETSTG *pspss /* array of STATPROPSETSTGs*/
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* ifndef _PROPAPI_H_*/
|