|
|
/*+-------------------------------------------------------------------------
* * 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_*/
|