DynamiCall/prototypes.h
#ifndef prototypes_h__
#define prototypes_h__
#include <Windows.h>
#include <MMSystem.h>
#include <TlHelp32.h>
#include <WinNls.h>
#include <WinUser.h>
#include <winhttp.h>
#include <lm.h> // for NETAPI32.DLL
#include <Psapi.h>
#include <Wincrypt.h>
#include <OleAcc.h>
#include <ImageHlp.h>
#include <Shlwapi.h>
#include <WinGDI.h>
#include <Sddl.h>
#include <Winsvc.h>
#include <Shlobj.h>
#include <Ole2.h>
/************************************************************************/
/* NETAPI32.DLL */
/************************************************************************/
typedef NET_API_STATUS (NET_API_FUNCTION *PROTO_NetUserGetInfo)(
__in LPCWSTR servername,
__in LPCWSTR username,
__in DWORD level,
__out LPBYTE *bufptr
);
typedef NET_API_STATUS (NET_API_FUNCTION *PROTO_NetApiBufferFree)(
__in LPVOID Buffer
);
/************************************************************************/
/* WINHTTP.DLL */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_WinHttpGetIEProxyConfigForCurrentUser)(
__inout WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig
);
typedef BOOL (WINAPI *PROTO_WinHttpReadData)(
__in HINTERNET hRequest,
__out LPVOID lpBuffer,
__in DWORD dwNumberOfBytesToRead,
__out LPDWORD lpdwNumberOfBytesRead
);
typedef BOOL (WINAPI *PROTO_WinHttpReceiveResponse)(
__in HINTERNET hRequest,
__reserved LPVOID lpReserved
);
typedef BOOL (WINAPI *PROTO_WinHttpSendRequest)(
__in HINTERNET hRequest,
__in_opt LPCWSTR pwszHeaders,
__in DWORD dwHeadersLength,
__in_opt LPVOID lpOptional,
__in DWORD dwOptionalLength,
__in DWORD dwTotalLength,
__in DWORD_PTR dwContext
);
typedef BOOL (WINAPI *PROTO_WinHttpQueryOption)(
__in HINTERNET hInternet,
__in DWORD dwOption,
__out LPVOID lpBuffer,
__inout LPDWORD lpdwBufferLength
);
typedef BOOL (WINAPI *PROTO_WinHttpWriteData)(
__in HINTERNET hRequest,
__in LPCVOID lpBuffer,
__in DWORD dwNumberOfBytesToWrite,
__out LPDWORD lpdwNumberOfBytesWritten
);
typedef HINTERNET (WINAPI *PROTO_WinHttpOpen)(
__in LPCWSTR pwszUserAgent,
__in DWORD dwAccessType,
__in LPCWSTR pwszProxyName,
__in LPCWSTR pwszProxyBypass,
__in DWORD dwFlags
);
typedef BOOL (WINAPI *PROTO_WinHttpSetOption)(
__in HINTERNET hInternet,
__in DWORD dwOption,
__in LPVOID lpBuffer,
__in DWORD dwBufferLength
);
typedef BOOL (WINAPI *PROTO_WinHttpAddRequestHeaders)(
__in HINTERNET hRequest,
__in LPCWSTR pwszHeaders,
__in DWORD dwHeadersLength,
__in DWORD dwModifiers
);
typedef BOOL (WINAPI *PROTO_WinHttpGetProxyForUrl)(
__in HINTERNET hSession,
__in LPCWSTR lpcwszUrl,
__in WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions,
__out WINHTTP_PROXY_INFO *pProxyInfo
);
typedef HINTERNET (WINAPI *PROTO_WinHttpConnect)(
__in HINTERNET hSession,
__in LPCWSTR pswzServerName,
__in INTERNET_PORT nServerPort,
__reserved DWORD dwReserved
);
typedef BOOL (WINAPI *PROTO_WinHttpSetTimeouts)(
__in HINTERNET hInternet,
__in int dwResolveTimeout,
__in int dwConnectTimeout,
__in int dwSendTimeout,
__in int dwReceiveTimeout
);
typedef HINTERNET (WINAPI *PROTO_WinHttpOpenRequest)(
__in HINTERNET hConnect,
__in LPCWSTR pwszVerb,
__in LPCWSTR pwszObjectName,
__in LPCWSTR pwszVersion,
__in LPCWSTR pwszReferrer,
__in LPCWSTR *ppwszAcceptTypes,
__in DWORD dwFlags
);
/************************************************************************/
/* PSAPI.DLL */
/************************************************************************/
typedef DWORD (WINAPI *PROTO_GetModuleFileNameExA)(
__in HANDLE hProcess,
__in_opt HMODULE hModule,
__out LPSTR lpFilename,
__in DWORD nSize
);
typedef DWORD (WINAPI *PROTO_GetDeviceDriverBaseNameW)(
__in LPVOID ImageBase,
__out LPWSTR lpBaseName,
__in DWORD nSize
);
typedef BOOL (WINAPI *PROTO_EnumDeviceDrivers)(
__out LPVOID *lpImageBase,
__in DWORD cb,
__out LPDWORD lpcbNeeded
);
typedef DWORD (WINAPI *PROTO_GetModuleFileNameExW)(
__in HANDLE hProcess,
__in_opt HMODULE hModule,
__out LPWSTR lpFilename,
__in DWORD nSize
);
typedef BOOL (WINAPI *PROTO_EnumProcessModules)(
__in HANDLE hProcess,
__out HMODULE *lphModule,
__in DWORD cb,
__out LPDWORD lpcbNeeded
);
/************************************************************************/
/* SHLWAPI.dll */
/************************************************************************/
typedef LPSTR (WINAPI *PROTO_StrRChrA)(__in LPCSTR lpStart, __in_opt LPCSTR lpEnd, __in WORD wMatch);
typedef int (WINAPI *PROTO_wnsprintfW)(__out_ecount(cchLimitIn) LPWSTR lpOut, int cchLimitIn, LPCWSTR lpFmt, ...);
/************************************************************************/
/* WINMM.dll */
/************************************************************************/
typedef MMRESULT (WINAPI *PROTO_mixerSetControlDetails)( __in_opt HMIXEROBJ hmxobj, __in LPMIXERCONTROLDETAILS pmxcd, __in DWORD fdwDetails);
typedef MMRESULT (WINAPI *PROTO_mixerGetControlDetailsA)( __in_opt HMIXEROBJ hmxobj, __inout LPMIXERCONTROLDETAILS pmxcd, __in DWORD fdwDetails);
typedef MMRESULT (WINAPI *PROTO_mixerGetLineControlsA)( __in_opt HMIXEROBJ hmxobj, __inout LPMIXERLINECONTROLSA pmxlc, __in DWORD fdwControls);
typedef MMRESULT (WINAPI *PROTO_mixerGetLineInfoA)( __in_opt HMIXEROBJ hmxobj, __out LPMIXERLINEA pmxl, __in DWORD fdwInfo);
typedef MMRESULT (WINAPI *PROTO_waveInClose)( __in HWAVEIN hwi);
typedef MMRESULT (WINAPI *PROTO_waveInReset)( __in HWAVEIN hwi);
typedef MMRESULT (WINAPI *PROTO_waveInOpen)( __out_opt LPHWAVEIN phwi, __in UINT uDeviceID,
__in LPCWAVEFORMATEX pwfx, __in_opt DWORD_PTR dwCallback, __in_opt DWORD_PTR dwInstance, __in DWORD fdwOpen);
typedef MMRESULT (WINAPI *PROTO_mixerOpen)( __out_opt LPHMIXER phmx, __in UINT uMxId, __in_opt DWORD_PTR dwCallback, __in_opt DWORD_PTR dwInstance, __in DWORD fdwOpen);
typedef MMRESULT (WINAPI *PROTO_mixerClose)( __in HMIXER hmx);
typedef MMRESULT (WINAPI *PROTO_mixerGetDevCapsA)( __in UINT_PTR uMxId, __out_bcount(cbmxcaps) LPMIXERCAPSA pmxcaps, __in UINT cbmxcaps);
typedef UINT (WINAPI *PROTO_mixerGetNumDevs)(void);
/************************************************************************/
/* CRYPT32.dll */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_CertFreeCertificateContext)(
__in_opt PCCERT_CONTEXT pCertContext
);
typedef BOOL (WINAPI *PROTO_CryptUnprotectData)(
IN DATA_BLOB* pDataIn, // in encr blob
__deref_opt_out_opt LPWSTR* ppszDataDescr, // out
IN OPTIONAL DATA_BLOB* pOptionalEntropy,
__reserved PVOID pvReserved,
IN OPTIONAL CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct,
IN DWORD dwFlags,
OUT DATA_BLOB* pDataOut
);
/************************************************************************/
/* OLEACC.dll */
/************************************************************************/
typedef HRESULT (WINAPI *PROTO_AccessibleChildren)(IAccessible* paccContainer, LONG iChildStart,LONG cChildren, VARIANT* rgvarChildren,LONG* pcObtained);
typedef HRESULT (WINAPI *PROTO_AccessibleObjectFromWindow)(HWND hwnd, DWORD dwId, REFIID riid, void **ppvObject);
/************************************************************************/
/* imagehlp.dll */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_MapAndLoad)(
__in PSTR ImageName,
__in PSTR DllPath,
__out PLOADED_IMAGE LoadedImage,
__in BOOL DotDll,
__in BOOL ReadOnly
);
typedef BOOL (WINAPI *PROTO_UnMapAndLoad)(
__in PLOADED_IMAGE LoadedImage
);
/************************************************************************/
/* VERSION.DLL */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_VerQueryValueW)(
__in LPCVOID pBlock,
__in LPCWSTR lpSubBlock,
__out LPVOID *lplpBuffer,
__out PUINT puLen
);
typedef DWORD (WINAPI *PROTO_GetFileVersionInfoSizeW)(
__in LPCWSTR lptstrFilename,
__out_opt LPDWORD lpdwHandle
);
typedef BOOL (WINAPI *PROTO_GetFileVersionInfoW)(
__in LPCWSTR lptstrFilename,
__reserved DWORD dwHandle,
__in DWORD dwLen,
__out LPVOID lpData
);
/************************************************************************/
/* KERNEL32.DLL */
/************************************************************************/
typedef HANDLE (WINAPI *PROTO_CreateFileMappingA)(
__in HANDLE hFile,
__in_opt LPSECURITY_ATTRIBUTES lpAttributes,
__in DWORD flProtect,
__in DWORD dwMaximumSizeHigh,
__in DWORD dwMaximumSizeLow,
__in_opt LPCSTR lpName
);
typedef BOOL (WINAPI *PROTO_UnmapViewOfFile)(
__in LPCVOID lpBaseAddress
);
typedef DWORD (WINAPI *PROTO_GetTickCount)(void);
typedef BOOL (WINAPI *PROTO_TerminateProcess)(
__in HANDLE hProcess,
__in UINT uExitCode
);
typedef HANDLE (WINAPI *PROTO_CreateFileW)(
__in LPCWSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
typedef DWORD (WINAPI *PROTO_GetFileSize)(
__in HANDLE hFile,
__out_opt LPDWORD lpFileSizeHigh
);
typedef HANDLE (WINAPI *PROTO_OpenProcess)(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in DWORD dwProcessId
);
typedef DWORD (WINAPI *PROTO_GetCurrentProcessId)(void);
typedef DWORD (WINAPI *PROTO_GetCurrentProcessId)(void);
typedef UINT (WINAPI *PROTO_GetSystemDirectoryA)(
__out LPSTR lpBuffer,
__in UINT uSize
);
typedef DWORD (WINAPI *PROTO_GetEnvironmentVariableW)(
__in_opt LPCWSTR lpName,
__out_opt LPWSTR lpBuffer,
__in DWORD nSize
);
typedef BOOL (WINAPI *PROTO_FindClose)(
__inout HANDLE hFindFile
);
typedef BOOL (WINAPI *PROTO_FindNextFileW)(
__in HANDLE hFindFile,
__out LPWIN32_FIND_DATAW lpFindFileData
);
typedef BOOL (WINAPI *PROTO_CopyFileW)(
__in LPCWSTR lpExistingFileName,
__in LPCWSTR lpNewFileName,
__in BOOL bFailIfExists
);
typedef BOOL (WINAPI *PROTO_RemoveDirectoryW)(
__in LPCWSTR lpPathName
);
typedef HANDLE (WINAPI *PROTO_FindFirstFileW)(
__in LPCWSTR lpFileName,
__out LPWIN32_FIND_DATAW lpFindFileData
);
typedef BOOL (WINAPI *PROTO_CreateDirectoryW)(
__in LPCWSTR lpPathName,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
typedef BOOL (WINAPI *PROTO_WriteFile)(
__in HANDLE hFile,
__in_bcount_opt(nNumberOfBytesToWrite) LPCVOID lpBuffer,
__in DWORD nNumberOfBytesToWrite,
__out_opt LPDWORD lpNumberOfBytesWritten,
__inout_opt LPOVERLAPPED lpOverlapped
);
typedef HANDLE (WINAPI *PROTO_CreateFileA)(
__in LPCSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in_opt HANDLE hTemplateFile
);
typedef VOID (WINAPI *PROTO_ExitProcess)(
__in UINT uExitCode
);
typedef UINT (WINAPI *PROTO_GetDriveTypeW)(
__in_opt LPCWSTR lpRootPathName
);
typedef BOOL (WINAPI *PROTO_ReadFile)(
__in HANDLE hFile,
__out_bcount_part_opt(nNumberOfBytesToRead, *lpNumberOfBytesRead) __out_data_source(FILE) LPVOID lpBuffer,
__in DWORD nNumberOfBytesToRead,
__out_opt LPDWORD lpNumberOfBytesRead,
__inout_opt LPOVERLAPPED lpOverlapped
);
typedef DWORD (WINAPI *PROTO_GetModuleFileNameA)(
__in_opt HMODULE hModule,
__out_ecount_part(nSize, return + 1) LPCH lpFilename,
__in DWORD nSize
);
typedef HLOCAL (WINAPI *PROTO_LocalFree)(
__deref HLOCAL hMem
);
typedef HLOCAL (WINAPI *PROTO_LocalAlloc)(
__in UINT uFlags,
__in SIZE_T uBytes
);
typedef DWORD (WINAPI *PROTO_GetLastError)(VOID);
typedef HANDLE (WINAPI *PROTO_CreateToolhelp32Snapshot)(
DWORD dwFlags,
DWORD th32ProcessID
);
typedef BOOL (WINAPI *PROTO_Process32First)(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);
typedef BOOL (WINAPI *PROTO_Process32Next)(
HANDLE hSnapshot,
LPPROCESSENTRY32 lppe
);
typedef BOOL (WINAPI *PROTO_Module32First)(
HANDLE hSnapshot,
LPMODULEENTRY32 lpme
);
typedef BOOL (WINAPI *PROTO_Module32Next)(
HANDLE hSnapshot,
LPMODULEENTRY32 lpme
);
typedef FARPROC (WINAPI *PROTO_GetProcAddress) (
__in HMODULE hModule,
__in LPCSTR lpProcName
);
typedef HANDLE (WINAPI *PROTO_FindFirstFileA)(
__in LPCSTR lpFileName,
__out LPWIN32_FIND_DATAA lpFindFileData
);
typedef DWORD (WINAPI *PROTO_GetEnvironmentVariableA)(
__in_opt LPCSTR lpName,
__out_ecount_part_opt(nSize, return + 1) LPSTR lpBuffer,
__in DWORD nSize
);
typedef BOOL (WINAPI *PROTO_GetFileInformationByHandle)(
__in HANDLE hFile,
__out LPBY_HANDLE_FILE_INFORMATION lpFileInformation
);
typedef BOOL (WINAPI *PROTO_Process32FirstW)(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
typedef BOOL (WINAPI *PROTO_Process32NextW)(
HANDLE hSnapshot,
LPPROCESSENTRY32W lppe
);
typedef BOOL (WINAPI *PROTO_FreeLibrary) (
__in HMODULE hLibModule
);
typedef HANDLE (WINAPI *PROTO_GetCurrentProcess)(VOID);
typedef BOOL (WINAPI *PROTO_GetDiskFreeSpaceExW)(
__in_opt LPCWSTR lpDirectoryName,
__out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
__out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
__out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
typedef int (WINAPI *PROTO_GetLocaleInfoW)(
__in LCID Locale,
__in LCTYPE LCType,
__out_ecount_opt(cchData) LPWSTR lpLCData,
__in int cchData);
typedef BOOL (WINAPI *PROTO_GlobalMemoryStatusEx)(
__out LPMEMORYSTATUSEX lpBuffer
);
typedef VOID (WINAPI *PROTO_GetSystemInfo)(
__out LPSYSTEM_INFO lpSystemInfo
);
typedef BOOL (WINAPI *PROTO_GetSystemPowerStatus)(
__out LPSYSTEM_POWER_STATUS lpSystemPowerStatus
);
typedef BOOL (WINAPI *PROTO_GetVolumeInformationW)(
__in_opt LPCWSTR lpRootPathName,
__out_ecount_opt(nVolumeNameSize) LPWSTR lpVolumeNameBuffer,
__in DWORD nVolumeNameSize,
__out_opt LPDWORD lpVolumeSerialNumber,
__out_opt LPDWORD lpMaximumComponentLength,
__out_opt LPDWORD lpFileSystemFlags,
__out_ecount_opt(nFileSystemNameSize) LPWSTR lpFileSystemNameBuffer,
__in DWORD nFileSystemNameSize
);
typedef HMODULE (WINAPI *PROTO_LoadLibraryW)(
__in LPCWSTR lpLibFileName
);
typedef DWORD (WINAPI *PROTO_WaitForSingleObject)(
__in HANDLE hHandle,
__in DWORD dwMilliseconds
);
typedef BOOL (WINAPI *PROTO_SetFileAttributesW)(
__in LPCWSTR lpFileName,
__in DWORD dwFileAttributes
);
typedef VOID (WINAPI *PROTO_SetLastError)(
__in DWORD dwErrCode
);
typedef SIZE_T (WINAPI *PROTO_VirtualQueryEx)(
__in HANDLE hProcess,
__in_opt LPCVOID lpAddress,
__out_bcount_part(dwLength, return) PMEMORY_BASIC_INFORMATION lpBuffer,
__in SIZE_T dwLength
);
typedef BOOL (WINAPI *PROTO_Module32FirstW)(
HANDLE hSnapshot,
LPMODULEENTRY32W lpme
);
typedef BOOL (WINAPI *PROTO_Module32NextW)(
HANDLE hSnapshot,
LPMODULEENTRY32W lpme
);
typedef int (WINAPI *PROTO_WideCharToMultiByte)(
__in UINT CodePage,
__in DWORD dwFlags,
__in_ecount(cchWideChar) LPCWSTR lpWideCharStr,
__in int cchWideChar,
__out_bcount_opt(cbMultiByte) __transfer(lpWideCharStr) LPSTR lpMultiByteStr,
__in int cbMultiByte,
__in_opt LPCSTR lpDefaultChar,
__out_opt LPBOOL lpUsedDefaultChar);
typedef DWORD (WINAPI *PROTO_GetShortPathNameW)(
__in LPCWSTR lpszLongPath,
__out_ecount_part(cchBuffer, return + 1) LPWSTR lpszShortPath,
__in DWORD cchBuffer
);
typedef DWORD (WINAPI *PROTO_ExpandEnvironmentStringsW)(
__in LPCWSTR lpSrc,
__out_ecount_part_opt(nSize, return) LPWSTR lpDst,
__in DWORD nSize
);
typedef DWORD (WINAPI *PROTO_ExpandEnvironmentStringsA)(
__in LPCSTR lpSrc,
__out_ecount_part_opt(nSize, return) LPSTR lpDst,
__in DWORD nSize
);
typedef BOOL (WINAPI *PROTO_VirtualFreeEx)(
__in HANDLE hProcess,
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD dwFreeType
);
typedef VOID (WINAPI *PROTO_GetSystemTimeAsFileTime)(
__out LPFILETIME lpSystemTimeAsFileTime
);
typedef BOOL (WINAPI *PROTO_DeleteFileA)(
__in LPCSTR lpFileName
);
typedef BOOL (WINAPI *PROTO_SetFileAttributesA)(
__in LPCSTR lpFileName,
__in DWORD dwFileAttributes
);
typedef DWORD (WINAPI *PROTO_GetLongPathNameA)(
__in LPCSTR lpszShortPath,
__out_ecount_part(cchBuffer, return + 1) LPSTR lpszLongPath,
__in DWORD cchBuffer
);
typedef LPWSTR (WINAPI *PROTO_GetCommandLineW)(VOID);
typedef LPSTR (WINAPI *PROTO_GetCommandLineA)(VOID);
typedef BOOL (WINAPI *PROTO_MoveFileExA)(
__in LPCSTR lpExistingFileName,
__in_opt LPCSTR lpNewFileName,
__in DWORD dwFlags
);
typedef BOOL (WINAPI *PROTO_GlobalUnlock)(
__in HGLOBAL hMem
);
typedef HANDLE (WINAPI *PROTO_OpenFileMappingA)(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandle,
__in LPCSTR lpName
);
typedef BOOL (WINAPI *PROTO_CopyFileA)(
__in LPCSTR lpExistingFileName,
__in LPCSTR lpNewFileName,
__in BOOL bFailIfExists
);
typedef BOOL (WINAPI *PROTO_FindNextFileA)(
__in HANDLE hFindFile,
__out LPWIN32_FIND_DATAA lpFindFileData
);
typedef BOOL (WINAPI *PROTO_GetDiskFreeSpaceExA)(
__in_opt LPCSTR lpDirectoryName,
__out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
__out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
__out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
typedef DWORD (WINAPI *PROTO_SetFilePointer)(
__in HANDLE hFile,
__in LONG lDistanceToMove,
__inout_opt PLONG lpDistanceToMoveHigh,
__in DWORD dwMoveMethod
);
typedef BOOL (WINAPI *PROTO_IsDebuggerPresent)(
VOID
);
typedef BOOL (WINAPI *PROTO_GetFileTime)(
__in HANDLE hFile,
__out_opt LPFILETIME lpCreationTime,
__out_opt LPFILETIME lpLastAccessTime,
__out_opt LPFILETIME lpLastWriteTime
);
typedef HGLOBAL (WINAPI *PROTO_GlobalFree)(
__deref HGLOBAL hMem
);
typedef HMODULE (WINAPI *PROTO_LoadLibraryExA)(
__in LPCSTR lpLibFileName,
__reserved HANDLE hFile,
__in DWORD dwFlags
);
typedef HGLOBAL (WINAPI *PROTO_GlobalAlloc) (
__in UINT uFlags,
__in SIZE_T dwBytes
);
typedef BOOL (WINAPI *PROTO_DeviceIoControl)(
__in HANDLE hDevice,
__in DWORD dwIoControlCode,
__in_bcount_opt(nInBufferSize) LPVOID lpInBuffer,
__in DWORD nInBufferSize,
__out_bcount_part_opt(nOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer,
__in DWORD nOutBufferSize,
__out_opt LPDWORD lpBytesReturned,
__inout_opt LPOVERLAPPED lpOverlapped
);
typedef BOOL (WINAPI *PROTO_VirtualFree)(
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD dwFreeType
);
typedef BOOL (WINAPI *PROTO_VirtualProtectEx)(
__in HANDLE hProcess,
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flNewProtect,
__out PDWORD lpflOldProtect
);
typedef BOOL (WINAPI *PROTO_WriteProcessMemory)(
__in HANDLE hProcess,
__in LPVOID lpBaseAddress,
__in_bcount(nSize) LPCVOID lpBuffer,
__in SIZE_T nSize,
__out_opt SIZE_T * lpNumberOfBytesWritten
);
typedef BOOL (WINAPI *PROTO_ReadProcessMemory)(
__in HANDLE hProcess,
__in LPCVOID lpBaseAddress,
__out_bcount_part(nSize, *lpNumberOfBytesRead) LPVOID lpBuffer,
__in SIZE_T nSize,
__out_opt SIZE_T * lpNumberOfBytesRead
);
typedef HANDLE (WINAPI *PROTO_CreateRemoteThread)(
__in HANDLE hProcess,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in SIZE_T dwStackSize,
__in LPTHREAD_START_ROUTINE lpStartAddress,
__in_opt LPVOID lpParameter,
__in DWORD dwCreationFlags,
__out_opt LPDWORD lpThreadId
);
typedef BOOL (WINAPI *PROTO_SystemTimeToFileTime)(
__in CONST SYSTEMTIME *lpSystemTime,
__out LPFILETIME lpFileTime
);
typedef VOID (WINAPI *PROTO_GetSystemTime)(
__out LPSYSTEMTIME lpSystemTime
);
typedef BOOL (WINAPI *PROTO_FlushFileBuffers)(
__in HANDLE hFile
);
typedef int (WINAPI *PROTO_lstrcmpA)(
__in LPCSTR lpString1,
__in LPCSTR lpString2
);
typedef DWORD (WINAPI *PROTO_GetFileAttributesW)(
__in LPCWSTR lpFileName
);
typedef int (WINAPI *PROTO_MultiByteToWideChar)(
__in UINT CodePage,
__in DWORD dwFlags,
__in_bcount(cbMultiByte) LPCSTR lpMultiByteStr,
__in int cbMultiByte,
__out_ecount_opt(cchWideChar) __transfer(lpMultiByteStr) LPWSTR lpWideCharStr,
__in int cchWideChar);
typedef DWORD (WINAPI *PROTO_GetPrivateProfileStringW)(
__in_opt LPCWSTR lpAppName,
__in_opt LPCWSTR lpKeyName,
__in_opt LPCWSTR lpDefault,
__out_ecount_part_opt(nSize, return + 1) LPWSTR lpReturnedString,
__in DWORD nSize,
__in_opt LPCWSTR lpFileName
);
typedef LPSTR (WINAPI *PROTO_lstrcatA)(
__inout LPSTR lpString1,
__in LPCSTR lpString2
);
typedef LPSTR (WINAPI *PROTO_lstrcpyA)(
__out LPSTR lpString1,
__in LPCSTR lpString2
);
typedef int (WINAPI *PROTO_lstrcmpW)(
__in LPCWSTR lpString1,
__in LPCWSTR lpString2
);
typedef BOOL (WINAPI *PROTO_GetVolumeInformationA)(
__in_opt LPCSTR lpRootPathName,
__out_ecount_opt(nVolumeNameSize) LPSTR lpVolumeNameBuffer,
__in DWORD nVolumeNameSize,
__out_opt LPDWORD lpVolumeSerialNumber,
__out_opt LPDWORD lpMaximumComponentLength,
__out_opt LPDWORD lpFileSystemFlags,
__out_ecount_opt(nFileSystemNameSize) LPSTR lpFileSystemNameBuffer,
__in DWORD nFileSystemNameSize
);
typedef BOOL (WINAPI *PROTO_SetFileTime)(
__in HANDLE hFile,
__in_opt CONST FILETIME *lpCreationTime,
__in_opt CONST FILETIME *lpLastAccessTime,
__in_opt CONST FILETIME *lpLastWriteTime
);
typedef BOOL (WINAPI *PROTO_IsBadStringPtrW)(
__in_opt LPCWSTR lpsz,
__in UINT_PTR ucchMax
);
typedef LPVOID (WINAPI *PROTO_MapViewOfFile)(
__in HANDLE hFileMappingObject,
__in DWORD dwDesiredAccess,
__in DWORD dwFileOffsetHigh,
__in DWORD dwFileOffsetLow,
__in SIZE_T dwNumberOfBytesToMap
);
typedef BOOL (WINAPI *PROTO_DeleteFileW)(
__in LPCWSTR lpFileName
);
/************************************************************************/
/* USER32.DLL */
/************************************************************************/
typedef int (WINAPI *PROTO_MessageBoxA)(
__in_opt HWND hWnd,
__in_opt LPCSTR lpText,
__in_opt LPCSTR lpCaption,
__in UINT uType);
typedef int (WINAPI *PROTO_ToUnicode)(
__in UINT wVirtKey,
__in UINT wScanCode,
__in_bcount_opt(256) CONST BYTE *lpKeyState,
__out_ecount(cchBuff) LPWSTR pwszBuff,
__in int cchBuff,
__in UINT wFlags);
typedef BOOL (WINAPI *PROTO_EnumChildWindows)(
__in_opt HWND hWndParent,
__in WNDENUMPROC lpEnumFunc,
__in LPARAM lParam);
typedef int (WINAPI *PROTO_GetClassNameW)(
__in HWND hWnd,
__out_ecount_part(nMaxCount, return) LPWSTR lpClassName,
__in int nMaxCount
);
typedef UINT (WINAPI *PROTO_RegisterWindowMessageW)(
__in LPCWSTR lpString);
typedef int (WINAPI *PROTO_GetKeyNameTextW)(
__in LONG lParam,
__out_ecount(cchSize) LPWSTR lpString,
__in int cchSize);
typedef BOOL (WINAPI *PROTO_CloseClipboard)(VOID);
typedef HANDLE (WINAPI *PROTO_GetClipboardData)(__in UINT uFormat);
typedef BOOL (WINAPI *PROTO_OpenClipboard)(__in_opt HWND hWndNewOwner);
typedef BOOL (WINAPI *PROTO_EnumWindows)(__in WNDENUMPROC lpEnumFunc, __in LPARAM lParam);
typedef BOOL (WINAPI *PROTO_IsWindow)(__in_opt HWND hWnd);
typedef HWND (WINAPI *PROTO_FindWindowExW)(
__in_opt HWND hWndParent,
__in_opt HWND hWndChildAfter,
__in_opt LPCWSTR lpszClass,
__in_opt LPCWSTR lpszWindow);
typedef LRESULT (WINAPI *PROTO_SendMessageTimeoutW)(
__in HWND hWnd,
__in UINT Msg,
__in WPARAM wParam,
__in LPARAM lParam,
__in UINT fuFlags,
__in UINT uTimeout,
__out_opt PDWORD_PTR lpdwResult);
typedef int (WINAPI *PROTO_GetWindowTextW)(
__in HWND hWnd,
__out_ecount(nMaxCount) LPWSTR lpString,
__in int nMaxCount);
typedef int (WINAPI *PROTO_GetWindowTextA)(
__in HWND hWnd,
__out_ecount(nMaxCount) LPSTR lpString,
__in int nMaxCount);
typedef BOOL (WINAPI *PROTO_SystemParametersInfoA)(
__in UINT uiAction,
__in UINT uiParam,
__inout_opt PVOID pvParam,
__in UINT fWinIni);
typedef HWND (WINAPI *PROTO_GetForegroundWindow)(VOID);
typedef HWND (WINAPI *PROTO_GetDesktopWindow)(VOID);
typedef BOOL (WINAPI *PROTO_GetWindowInfo)(__in HWND hwnd, __inout PWINDOWINFO pwi);
typedef DWORD (WINAPI *PROTO_GetWindowThreadProcessId)(
__in HWND hWnd,
__out_opt LPDWORD lpdwProcessId);
/************************************************************************/
/* GDI32.dll */
/************************************************************************/
typedef int (WINAPI *PROTO_GetDIBits)( __in HDC hdc, __in HBITMAP hbm, __in UINT start, __in UINT cLines, __out_opt LPVOID lpvBits, __inout_xcount(sizeof(BITMAPINFOHEADER)) LPBITMAPINFO lpbmi, __in UINT usage); // SAL actual size of lpbmi is computed from structure elements
/************************************************************************/
/* ADVAPI32.dll */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_SetSecurityDescriptorSacl) (
__inout PSECURITY_DESCRIPTOR pSecurityDescriptor,
__in BOOL bSaclPresent,
__in_opt PACL pSacl,
__in BOOL bSaclDefaulted
);
typedef LSTATUS (APIENTRY *PROTO_RegOpenKeyA) (
__in HKEY hKey,
__in_opt LPCSTR lpSubKey,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PROTO_RegQueryValueExA) (
__in HKEY hKey,
__in_opt LPCSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_bcount_part_opt(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PROTO_RegCreateKeyA) (
__in HKEY hKey,
__in_opt LPCSTR lpSubKey,
__out PHKEY phkResult
);
typedef BOOL (WINAPI *PROTO_LookupAccountSidA)(
__in_opt LPCSTR lpSystemName,
__in PSID Sid,
__out_ecount_part_opt(*cchName, *cchName + 1) LPSTR Name,
__inout LPDWORD cchName,
__out_ecount_part_opt(*cchReferencedDomainName, *cchReferencedDomainName + 1) LPSTR ReferencedDomainName,
__inout LPDWORD cchReferencedDomainName,
__out PSID_NAME_USE peUse
);
typedef BOOL (WINAPI *PROTO_GetUserNameA) (
__out_ecount_part_opt(*pcbBuffer, *pcbBuffer) LPSTR lpBuffer,
__inout LPDWORD pcbBuffer
);
typedef LSTATUS (APIENTRY *PROTO_RegLoadKeyW) (
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__in LPCWSTR lpFile
);
typedef LSTATUS (APIENTRY *PROTO_RegCreateKeyW) (
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PROTO_RegSetValueExA) (
__in HKEY hKey,
__in_opt LPCSTR lpValueName,
__reserved DWORD Reserved,
__in DWORD dwType,
__in_bcount_opt(cbData) CONST BYTE* lpData,
__in DWORD cbData
);
typedef LSTATUS (APIENTRY *PROTO_RegUnLoadKeyW) (
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey
);
typedef LSTATUS (APIENTRY *PROTO_RegOpenKeyW) (
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PROTO_RegEnumKeyW) (
__in HKEY hKey,
__in DWORD dwIndex,
__out_ecount_part_opt(cchName,cchName + 1) LPWSTR lpName,
__in DWORD cchName
);
typedef BOOL (WINAPI *PROTO_OpenProcessToken) (
__in HANDLE ProcessHandle,
__in DWORD DesiredAccess,
__deref_out PHANDLE TokenHandle
);
typedef BOOL (WINAPI *PROTO_LookupPrivilegeValueA)(
__in_opt LPCSTR lpSystemName,
__in LPCSTR lpName,
__out PLUID lpLuid
);
typedef BOOL (WINAPI *PROTO_AdjustTokenPrivileges) (
__in HANDLE TokenHandle,
__in BOOL DisableAllPrivileges,
__in_opt PTOKEN_PRIVILEGES NewState,
__in DWORD BufferLength,
__out_bcount_part_opt(BufferLength, *ReturnLength) PTOKEN_PRIVILEGES PreviousState,
__out_opt PDWORD ReturnLength
);
typedef LSTATUS (APIENTRY *PROTO_RegOpenKeyExW) (
__in HKEY hKey,
__in_opt LPCWSTR lpSubKey,
__reserved DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PROTO_RegQueryValueExW) (
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_bcount_part_opt(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PROTO_RegCloseKey) (
__in HKEY hKey
);
typedef BOOL (WINAPI *PROTO_GetSecurityDescriptorSacl) (
__in PSECURITY_DESCRIPTOR pSecurityDescriptor,
__out LPBOOL lpbSaclPresent,
__deref_out PACL *pSacl,
__out LPBOOL lpbSaclDefaulted
);
typedef BOOL (WINAPI *PROTO_ConvertStringSecurityDescriptorToSecurityDescriptorA)(
IN LPCSTR StringSecurityDescriptor,
IN DWORD StringSDRevision,
OUT PSECURITY_DESCRIPTOR *SecurityDescriptor,
OUT PULONG SecurityDescriptorSize OPTIONAL
);
typedef BOOL (WINAPI *PROTO_SetSecurityDescriptorDacl) (
__inout PSECURITY_DESCRIPTOR pSecurityDescriptor,
__in BOOL bDaclPresent,
__in_opt PACL pDacl,
__in BOOL bDaclDefaulted
);
typedef BOOL (WINAPI *PROTO_InitializeSecurityDescriptor) (
__out PSECURITY_DESCRIPTOR pSecurityDescriptor,
__in DWORD dwRevision
);
typedef BOOL (WINAPI *PROTO_CloseEventLog) (
__in HANDLE hEventLog
);
typedef HANDLE (WINAPI *PROTO_OpenEventLogA) (
__in_opt LPCSTR lpUNCServerName,
__in LPCSTR lpSourceName
);
typedef BOOL (WINAPI *PROTO_GetOldestEventLogRecord) (
__in HANDLE hEventLog,
__out PDWORD OldestRecord
);
typedef BOOL (WINAPI *PROTO_GetNumberOfEventLogRecords) (
__in HANDLE hEventLog,
__out PDWORD NumberOfRecords
);
typedef BOOL (WINAPI *PROTO_ReadEventLogA) (
__in HANDLE hEventLog,
__in DWORD dwReadFlags,
__in DWORD dwRecordOffset,
__out_bcount_part(nNumberOfBytesToRead, *pnBytesRead) LPVOID lpBuffer,
__in DWORD nNumberOfBytesToRead,
__out DWORD *pnBytesRead,
__out DWORD *pnMinNumberOfBytesNeeded
);
typedef BOOL (WINAPI *PROTO_CloseServiceHandle)(
__in SC_HANDLE hSCObject
);
typedef SC_HANDLE (WINAPI *PROTO_OpenSCManagerA)(
__in_opt LPCSTR lpMachineName,
__in_opt LPCSTR lpDatabaseName,
__in DWORD dwDesiredAccess
);
typedef BOOL (WINAPI *PROTO_StartServiceA)(
__in SC_HANDLE hService,
__in DWORD dwNumServiceArgs,
__in_ecount_opt(dwNumServiceArgs)
LPCSTR *lpServiceArgVectors
);
typedef SC_HANDLE (WINAPI *PROTO_CreateServiceW)(
__in SC_HANDLE hSCManager,
__in LPCWSTR lpServiceName,
__in_opt LPCWSTR lpDisplayName,
__in DWORD dwDesiredAccess,
__in DWORD dwServiceType,
__in DWORD dwStartType,
__in DWORD dwErrorControl,
__in_opt LPCWSTR lpBinaryPathName,
__in_opt LPCWSTR lpLoadOrderGroup,
__out_opt LPDWORD lpdwTagId,
__in_opt LPCWSTR lpDependencies,
__in_opt LPCWSTR lpServiceStartName,
__in_opt LPCWSTR lpPassword
);
typedef LSTATUS (APIENTRY *PROTO_RegOpenKeyExA)(
__in HKEY hKey,
__in_opt LPCSTR lpSubKey,
__reserved DWORD ulOptions,
__in REGSAM samDesired,
__out PHKEY phkResult
);
typedef LSTATUS (APIENTRY *PROTO_RegEnumValueA) (
__in HKEY hKey,
__in DWORD dwIndex,
__out_ecount_part_opt(*lpcchValueName, *lpcchValueName + 1) LPSTR lpValueName,
__inout LPDWORD lpcchValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_bcount_part_opt(*lpcbData, *lpcbData) __out_data_source(REGISTRY) LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
typedef LSTATUS (APIENTRY *PROTO_RegEnumKeyExA) (
__in HKEY hKey,
__in DWORD dwIndex,
__out_ecount_part_opt(*lpcchName, *lpcchName + 1) LPSTR lpName,
__inout LPDWORD lpcchName,
__reserved LPDWORD lpReserved,
__out_ecount_part_opt(*lpcchClass,*lpcchClass + 1) LPSTR lpClass,
__inout_opt LPDWORD lpcchClass,
__out_opt PFILETIME lpftLastWriteTime
);
typedef LSTATUS (APIENTRY *PROTO_RegDeleteValueA) (
__in HKEY hKey,
__in_opt LPCSTR lpValueName
);
typedef PDWORD (WINAPI *PROTO_GetSidSubAuthority) (
__in PSID pSid,
__in DWORD nSubAuthority
);
typedef PUCHAR (WINAPI *PROTO_GetSidSubAuthorityCount) (
__in PSID pSid
);
typedef BOOL (WINAPI *PROTO_GetTokenInformation) (
__in HANDLE TokenHandle,
__in TOKEN_INFORMATION_CLASS TokenInformationClass,
__out_bcount_part_opt(TokenInformationLength, *ReturnLength) LPVOID TokenInformation,
__in DWORD TokenInformationLength,
__out PDWORD ReturnLength
);
typedef BOOL (WINAPI *PROTO_ConvertSidToStringSidW)(
IN PSID Sid,
__out_ecount(1) LPWSTR *StringSid
);
typedef LSTATUS (APIENTRY *PROTO_RegSetValueExW) (
__in HKEY hKey,
__in_opt LPCWSTR lpValueName,
__reserved DWORD Reserved,
__in DWORD dwType,
__in_bcount_opt(cbData) CONST BYTE* lpData,
__in DWORD cbData
);
typedef BOOL (WINAPI *PROTO_GetUserNameW) (
__out_ecount_part_opt(*pcbBuffer, *pcbBuffer) LPWSTR lpBuffer,
__inout LPDWORD pcbBuffer
);
typedef LSTATUS (APIENTRY *PROTO_RegEnumKeyExW) (
__in HKEY hKey,
__in DWORD dwIndex,
__out_ecount_part_opt(*lpcchName, *lpcchName + 1) LPWSTR lpName,
__inout LPDWORD lpcchName,
__reserved LPDWORD lpReserved,
__out_ecount_part_opt(*lpcchClass,*lpcchClass + 1) LPWSTR lpClass,
__inout_opt LPDWORD lpcchClass,
__out_opt PFILETIME lpftLastWriteTime
);
typedef BOOL (WINAPI *PROTO_ConvertSidToStringSidA)(
IN PSID Sid,
__out_ecount(1) LPSTR *StringSid
);
/************************************************************************/
/* SHELL32.dll */
/************************************************************************/
typedef BOOL (WINAPI *PROTO_SHGetSpecialFolderPathW)(
HWND hwnd,
__out_ecount(MAX_PATH) LPWSTR pszPath,
int csidl,
BOOL fCreate);
/************************************************************************/
/* OLE32.dll */
/************************************************************************/
typedef HRESULT (WINAPI *PROTO_CreateStreamOnHGlobal) (IN HGLOBAL hGlobal, IN BOOL fDeleteOnRelease,
OUT LPSTREAM FAR* ppstm);
#endif // prototypes_h__