/*++ Copyright (c) Microsoft Corporation. All rights reserved. Header Name: verifier.h Abstract: Internal interfaces for the standard application verifier provider. Author: Silviu Calinoiu (SilviuC) 2-Feb-2001 Revision History: --*/ #ifndef _VERIFIER_H_ #define _VERIFIER_H_ // // Some global things. // extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpNtdllThunks[]; extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpKernel32Thunks[]; extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpAdvapi32Thunks[]; extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpMsvcrtThunks[]; extern RTL_VERIFIER_THUNK_DESCRIPTOR AVrfpOleaut32Thunks[]; PRTL_VERIFIER_THUNK_DESCRIPTOR AVrfpGetThunkDescriptor ( PRTL_VERIFIER_THUNK_DESCRIPTOR DllThunks, ULONG Index); #define AVRFP_GET_ORIGINAL_EXPORT(DllThunks, Index) \ (FUNCTION_TYPE)(AVrfpGetThunkDescriptor(DllThunks, Index)->ThunkOldAddress) extern RTL_VERIFIER_PROVIDER_DESCRIPTOR AVrfpProvider; ///////////////////////////////////////////////////////////////////// ////////////////////////////////////////// ntdll.dll verified exports ///////////////////////////////////////////////////////////////////// //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtAllocateVirtualMemory( IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T RegionSize, IN ULONG AllocationType, IN ULONG Protect ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtFreeVirtualMemory( IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN OUT PSIZE_T RegionSize, IN ULONG FreeType ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtMapViewOfSection( IN HANDLE SectionHandle, IN HANDLE ProcessHandle, IN OUT PVOID *BaseAddress, IN ULONG_PTR ZeroBits, IN SIZE_T CommitSize, IN OUT PLARGE_INTEGER SectionOffset OPTIONAL, IN OUT PSIZE_T ViewSize, IN SECTION_INHERIT InheritDisposition, IN ULONG AllocationType, IN ULONG Protect ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtUnmapViewOfSection( IN HANDLE ProcessHandle, IN PVOID BaseAddress ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtCreateSection ( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN PLARGE_INTEGER MaximumSize OPTIONAL, IN ULONG SectionPageProtection, IN ULONG AllocationAttributes, IN HANDLE FileHandle OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtOpenSection( OUT PHANDLE SectionHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtCreateFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes, IN ULONG ShareAccess, IN ULONG CreateDisposition, IN ULONG CreateOptions, IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtOpenFile( OUT PHANDLE FileHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock, IN ULONG ShareAccess, IN ULONG OpenOptions ); //NTSYSAPI BOOL NTAPI AVrfpRtlTryEnterCriticalSection( PRTL_CRITICAL_SECTION CriticalSection ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlEnterCriticalSection( volatile RTL_CRITICAL_SECTION *CriticalSection ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlLeaveCriticalSection( volatile RTL_CRITICAL_SECTION *CriticalSection ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlInitializeCriticalSection( PRTL_CRITICAL_SECTION CriticalSection ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlInitializeCriticalSectionAndSpinCount( PRTL_CRITICAL_SECTION CriticalSection, ULONG SpinCount ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlDeleteCriticalSection( PRTL_CRITICAL_SECTION CriticalSection ); VOID AVrfpRtlInitializeResource( IN PRTL_RESOURCE Resource ); VOID AVrfpRtlDeleteResource ( IN PRTL_RESOURCE Resource ); BOOLEAN AVrfpRtlAcquireResourceShared ( IN PRTL_RESOURCE Resource, IN BOOLEAN Wait ); BOOLEAN AVrfpRtlAcquireResourceExclusive ( IN PRTL_RESOURCE Resource, IN BOOLEAN Wait ); VOID AVrfpRtlReleaseResource ( IN PRTL_RESOURCE Resource ); VOID AVrfpRtlConvertSharedToExclusive( IN PRTL_RESOURCE Resource ); VOID AVrfpRtlConvertExclusiveToShared ( IN PRTL_RESOURCE Resource ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtClose( IN HANDLE Handle ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtCreateEvent ( OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState ); //NTSYSAPI PVOID NTAPI AVrfpRtlAllocateHeap( IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size ); //NTSYSAPI BOOLEAN NTAPI AVrfpRtlFreeHeap( IN PVOID HeapHandle, IN ULONG Flags, IN PVOID BaseAddress ); //NTSYSAPI PVOID NTAPI AVrfpRtlReAllocateHeap( IN PVOID HeapHandle, IN ULONG Flags, IN PVOID BaseAddress, IN SIZE_T Size ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlQueueWorkItem( IN WORKERCALLBACKFUNC Function, IN PVOID Context, IN ULONG Flags ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlRegisterWait ( OUT PHANDLE WaitHandle, IN HANDLE Handle, IN WAITORTIMERCALLBACKFUNC Function, IN PVOID Context, IN ULONG Milliseconds, IN ULONG Flags ); //NTSYSAPI NTSTATUS NTAPI AVrfpRtlCreateTimer( IN HANDLE TimerQueueHandle, OUT HANDLE *Handle, IN WAITORTIMERCALLBACKFUNC Function, IN PVOID Context, IN ULONG DueTime, IN ULONG Period, IN ULONG Flags ); NTSTATUS NTAPI AVrfpLdrGetProcedureAddress( IN PVOID DllHandle, IN CONST ANSI_STRING* ProcedureName OPTIONAL, IN ULONG ProcedureNumber OPTIONAL, OUT PVOID *ProcedureAddress ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtOpenKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtReadFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtReadFileScatter( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PFILE_SEGMENT_ELEMENT SegmentArray, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtWriteFile( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PVOID Buffer, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtWriteFileGather( IN HANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL, OUT PIO_STATUS_BLOCK IoStatusBlock, IN PFILE_SEGMENT_ELEMENT SegmentArray, IN ULONG Length, IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtWaitForSingleObject( IN HANDLE Handle, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); //NTSYSCALLAPI NTSTATUS NTAPI AVrfpNtWaitForMultipleObjects( IN ULONG Count, IN HANDLE Handles[], IN WAIT_TYPE WaitType, IN BOOLEAN Alertable, IN PLARGE_INTEGER Timeout OPTIONAL ); NTSTATUS NTAPI AVrfpRtlSetThreadPoolStartFunc( PRTLP_START_THREAD StartFunc, PRTLP_EXIT_THREAD ExitFunc ); ///////////////////////////////////////////////////////////////////// /////////////////////////////////////// kernel32.dll verified exports ///////////////////////////////////////////////////////////////////// #define AVRF_INDEX_KERNEL32_HEAPCREATE 0 #define AVRF_INDEX_KERNEL32_HEAPDESTROY 1 #define AVRF_INDEX_KERNEL32_CLOSEHANDLE 2 #define AVRF_INDEX_KERNEL32_EXITTHREAD 3 #define AVRF_INDEX_KERNEL32_TERMINATETHREAD 4 #define AVRF_INDEX_KERNEL32_SUSPENDTHREAD 5 #define AVRF_INDEX_KERNEL32_TLSALLOC 6 #define AVRF_INDEX_KERNEL32_TLSFREE 7 #define AVRF_INDEX_KERNEL32_TLSGETVALUE 8 #define AVRF_INDEX_KERNEL32_TLSSETVALUE 9 #define AVRF_INDEX_KERNEL32_CREATETHREAD 10 #define AVRF_INDEX_KERNEL32_GETPROCADDRESS 11 #define AVRF_INDEX_KERNEL32_WAITFORSINGLEOBJECT 12 #define AVRF_INDEX_KERNEL32_WAITFORMULTIPLEOBJECTS 13 #define AVRF_INDEX_KERNEL32_WAITFORSINGLEOBJECTEX 14 #define AVRF_INDEX_KERNEL32_WAITFORMULTIPLEOBJECTSEX 15 #define AVRF_INDEX_KERNEL32_GLOBALALLOC 16 #define AVRF_INDEX_KERNEL32_GLOBALREALLOC 17 #define AVRF_INDEX_KERNEL32_LOCALALLOC 18 #define AVRF_INDEX_KERNEL32_LOCALREALLOC 19 #define AVRF_INDEX_KERNEL32_CREATEFILEA 20 #define AVRF_INDEX_KERNEL32_CREATEFILEW 21 #define AVRF_INDEX_KERNEL32_FREELIBRARYANDEXITTHREAD 22 #define AVRF_INDEX_KERNEL32_GETTICKCOUNT 23 #define AVRF_INDEX_KERNEL32_ISBADREADPTR 24 #define AVRF_INDEX_KERNEL32_ISBADHUGEREADPTR 25 #define AVRF_INDEX_KERNEL32_ISBADWRITEPTR 26 #define AVRF_INDEX_KERNEL32_ISBADHUGEWRITEPTR 27 #define AVRF_INDEX_KERNEL32_ISBADCODEPTR 28 #define AVRF_INDEX_KERNEL32_ISBADSTRINGPTRA 29 #define AVRF_INDEX_KERNEL32_ISBADSTRINGPTRW 30 #define AVRF_INDEX_KERNEL32_EXITPROCESS 31 #define AVRF_INDEX_KERNEL32_VIRTUALFREE 32 #define AVRF_INDEX_KERNEL32_VIRTUALFREEEX 33 //WINBASEAPI HANDLE WINAPI AVrfpHeapCreate( IN DWORD flOptions, IN SIZE_T dwInitialSize, IN SIZE_T dwMaximumSize ); //WINBASEAPI BOOL WINAPI AVrfpHeapDestroy( IN OUT HANDLE hHeap ); //WINBASEAPI BOOL WINAPI AVrfpCloseHandle( IN OUT HANDLE hObject ); //WINBASEAPI DECLSPEC_NORETURN VOID WINAPI AVrfpExitThread( IN DWORD dwExitCode ); //WINBASEAPI BOOL WINAPI AVrfpTerminateThread( IN OUT HANDLE hThread, IN DWORD dwExitCode ); //WINBASEAPI DWORD WINAPI AVrfpSuspendThread( IN HANDLE hThread ); //WINBASEAPI HANDLE WINAPI AVrfpCreateThread( IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN SIZE_T dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId ); //WINBASEAPI DWORD WINAPI AVrfpTlsAlloc( VOID ); //WINBASEAPI BOOL WINAPI AVrfpTlsFree( IN DWORD dwTlsIndex ); //WINBASEAPI LPVOID WINAPI AVrfpTlsGetValue( IN DWORD dwTlsIndex ); //WINBASEAPI BOOL WINAPI AVrfpTlsSetValue( IN DWORD dwTlsIndex, IN LPVOID lpTlsValue ); //WINBASEAPI FARPROC WINAPI AVrfpGetProcAddress( IN HMODULE hModule, IN LPCSTR lpProcName ); //WINBASEAPI DWORD WINAPI AVrfpWaitForSingleObject( IN HANDLE hHandle, IN DWORD dwMilliseconds ); //WINBASEAPI DWORD WINAPI AVrfpWaitForMultipleObjects( IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds ); //WINBASEAPI DWORD WINAPI AVrfpWaitForSingleObjectEx( IN HANDLE hHandle, IN DWORD dwMilliseconds, IN BOOL bAlertable ); //WINBASEAPI DWORD WINAPI AVrfpWaitForMultipleObjectsEx( IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds, IN BOOL bAlertable ); //WINBASEAPI HGLOBAL WINAPI AVrfpGlobalAlloc( IN UINT uFlags, IN SIZE_T dwBytes ); //WINBASEAPI HGLOBAL WINAPI AVrfpGlobalReAlloc( IN HGLOBAL hMem, IN SIZE_T dwBytes, IN UINT uFlags ); //WINBASEAPI HLOCAL WINAPI AVrfpLocalAlloc( IN UINT uFlags, IN SIZE_T uBytes ); //WINBASEAPI HLOCAL WINAPI AVrfpLocalReAlloc( IN HLOCAL hMem, IN SIZE_T uBytes, IN UINT uFlags ); //WINBASEAPI HANDLE WINAPI AVrfpCreateFileA( IN LPCSTR lpFileName, IN DWORD dwDesiredAccess, IN DWORD dwShareMode, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, IN DWORD dwCreationDisposition, IN DWORD dwFlagsAndAttributes, IN HANDLE hTemplateFile ); //WINBASEAPI HANDLE WINAPI AVrfpCreateFileW( IN LPCWSTR lpFileName, IN DWORD dwDesiredAccess, IN DWORD dwShareMode, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, IN DWORD dwCreationDisposition, IN DWORD dwFlagsAndAttributes, IN HANDLE hTemplateFile ); //WINBASEAPI DECLSPEC_NORETURN VOID WINAPI AVrfpFreeLibraryAndExitThread( IN HMODULE hLibModule, IN DWORD dwExitCode ); //WINBASEAPI DWORD WINAPI AVrfpGetTickCount( VOID ); //WINBASEAPI BOOL WINAPI AVrfpIsBadReadPtr( CONST VOID *lp, UINT_PTR cb ); //WINBASEAPI BOOL WINAPI AVrfpIsBadHugeReadPtr( CONST VOID *lp, UINT_PTR cb ); //WINBASEAPI BOOL WINAPI AVrfpIsBadWritePtr( LPVOID lp, UINT_PTR cb ); //WINBASEAPI BOOL WINAPI AVrfpIsBadHugeWritePtr( LPVOID lp, UINT_PTR cb ); //WINBASEAPI BOOL WINAPI AVrfpIsBadCodePtr( FARPROC lpfn ); //WINBASEAPI BOOL WINAPI AVrfpIsBadStringPtrA( LPCSTR lpsz, UINT_PTR cchMax ); //WINBASEAPI BOOL WINAPI AVrfpIsBadStringPtrW( LPCWSTR lpsz, UINT_PTR cchMax ); //WINBASEAPI DECLSPEC_NORETURN VOID WINAPI AVrfpExitProcess( IN UINT uExitCode ); //WINBASEAPI BOOL WINAPI AVrfpVirtualFree( IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType ); //WINBASEAPI BOOL WINAPI AVrfpVirtualFreeEx( IN HANDLE hProcess, IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD dwFreeType ); ///////////////////////////////////////////////////////////////////// /////////////////////////////////////// advapi32.dll verified exports ///////////////////////////////////////////////////////////////////// typedef ACCESS_MASK REGSAM; #define AVRF_INDEX_ADVAPI32_REGCREATEKEYA 0 #define AVRF_INDEX_ADVAPI32_REGCREATEKEYW 1 #define AVRF_INDEX_ADVAPI32_REGCREATEKEYEXA 2 #define AVRF_INDEX_ADVAPI32_REGCREATEKEYEXW 3 #define AVRF_INDEX_ADVAPI32_REGOPENKEYA 4 #define AVRF_INDEX_ADVAPI32_REGOPENKEYW 5 #define AVRF_INDEX_ADVAPI32_REGOPENKEYEXA 6 #define AVRF_INDEX_ADVAPI32_REGOPENKEYEXW 7 //WINADVAPI LONG APIENTRY AVrfpRegCreateKeyExW ( IN HKEY hKey, IN LPCWSTR lpSubKey, IN DWORD Reserved, IN LPWSTR lpClass, IN DWORD dwOptions, IN REGSAM samDesired, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, OUT PHKEY phkResult, OUT LPDWORD lpdwDisposition ); //WINADVAPI LONG APIENTRY AVrfpRegCreateKeyA ( IN HKEY hKey, IN LPCSTR lpSubKey, OUT PHKEY phkResult ); //WINADVAPI LONG APIENTRY AVrfpRegCreateKeyW ( IN HKEY hKey, IN LPCWSTR lpSubKey, OUT PHKEY phkResult ); //WINADVAPI LONG APIENTRY AVrfpRegCreateKeyExA ( IN HKEY hKey, IN LPCSTR lpSubKey, IN DWORD Reserved, IN LPSTR lpClass, IN DWORD dwOptions, IN REGSAM samDesired, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, OUT PHKEY phkResult, OUT LPDWORD lpdwDisposition ); //WINADVAPI LONG APIENTRY AVrfpRegCreateKeyExW ( IN HKEY hKey, IN LPCWSTR lpSubKey, IN DWORD Reserved, IN LPWSTR lpClass, IN DWORD dwOptions, IN REGSAM samDesired, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes, OUT PHKEY phkResult, OUT LPDWORD lpdwDisposition ); //WINADVAPI LONG APIENTRY AVrfpRegOpenKeyA ( IN HKEY hKey, IN LPCSTR lpSubKey, OUT PHKEY phkResult ); //WINADVAPI LONG APIENTRY AVrfpRegOpenKeyW ( IN HKEY hKey, IN LPCWSTR lpSubKey, OUT PHKEY phkResult ); //WINADVAPI LONG APIENTRY AVrfpRegOpenKeyExA ( IN HKEY hKey, IN LPCSTR lpSubKey, IN DWORD ulOptions, IN REGSAM samDesired, OUT PHKEY phkResult ); //WINADVAPI LONG APIENTRY AVrfpRegOpenKeyExW ( IN HKEY hKey, IN LPCWSTR lpSubKey, IN DWORD ulOptions, IN REGSAM samDesired, OUT PHKEY phkResult ); ///////////////////////////////////////////////////////////////////// /////////////////////////////////////// msvcrt.dll verified exports ///////////////////////////////////////////////////////////////////// #define AVRF_INDEX_MSVCRT_MALLOC 0 #define AVRF_INDEX_MSVCRT_CALLOC 1 #define AVRF_INDEX_MSVCRT_REALLOC 2 #define AVRF_INDEX_MSVCRT_FREE 3 #define AVRF_INDEX_MSVCRT_NEW 4 #define AVRF_INDEX_MSVCRT_DELETE 5 #define AVRF_INDEX_MSVCRT_NEWARRAY 6 #define AVRF_INDEX_MSVCRT_DELETEARRAY 7 PVOID __cdecl AVrfp_malloc ( IN SIZE_T Size ); PVOID __cdecl AVrfp_calloc ( IN SIZE_T Number, IN SIZE_T Size ); PVOID __cdecl AVrfp_realloc ( IN PVOID Address, IN SIZE_T Size ); VOID __cdecl AVrfp_free ( IN PVOID Address ); PVOID __cdecl AVrfp_new ( IN SIZE_T Size ); VOID __cdecl AVrfp_delete ( IN PVOID Address ); PVOID __cdecl AVrfp_newarray ( IN SIZE_T Size ); VOID __cdecl AVrfp_deletearray ( IN PVOID Address ); ///////////////////////////////////////////////////////////////////// ////////////////////////////////////////// ole32.dll verified exports ///////////////////////////////////////////////////////////////////// #define AVRF_INDEX_OLEAUT32_SYSALLOCSTRING 0 #define AVRF_INDEX_OLEAUT32_SYSREALLOCSTRING 1 #define AVRF_INDEX_OLEAUT32_SYSALLOCSTRINGLEN 2 #define AVRF_INDEX_OLEAUT32_SYSREALLOCSTRINGLEN 3 #define AVRF_INDEX_OLEAUT32_SYSALLOCSTRINGBYTELEN 4 typedef WCHAR OLECHAR; BSTR STDAPICALLTYPE AVrfpSysAllocString(const OLECHAR *); INT STDAPICALLTYPE AVrfpSysReAllocString(BSTR *, const OLECHAR *); BSTR STDAPICALLTYPE AVrfpSysAllocStringLen(const OLECHAR *, UINT); INT STDAPICALLTYPE AVrfpSysReAllocStringLen(BSTR *, const OLECHAR *, UINT); BSTR STDAPICALLTYPE AVrfpSysAllocStringByteLen(LPCSTR psz, UINT len); #endif // _VERIFIER_H_