Leaked source code of windows server 2003
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

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