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.
 
 
 
 
 
 

399 lines
9.7 KiB

//+----------------------------------------------------------------------------
//
// Copyright (C) 1996, Microsoft Corporation.
//
// All rights reserved.
//
// File: macport.h
//
// Synopsis: Defintions for unimplemented stubs & functions & structures
// for the Macintosh.
//
//-----------------------------------------------------------------------------
#ifndef _MACPORT_H_
#define _MACPORT_H_
//
// WLM is REALLY bad about calling SetLastError when an error occurs. This
// screws up the upper layer tests pretty badly. Use this macro when you
// know an error exists and that error 0 (S_OK or ERROR_SUCCESS) is defitely
// wrong.
//
#define HRESULT_FROM_ERROR(x) (x ? ((HRESULT) (((x) & 0x0000FFFF) | (FACILITY_WIN32 << 16) | 0x80000000)) : E_FAIL)
#ifndef _MAC
//
// Stub out some Mac calls if were not building for the mac
//
#define MacInitializeCommandLine()
#define FixHr(x) x
#define MacGetFocus()
//
// Process ID's are completely different on the Mac then on Win32.
//
typedef DWORD ProcessId;
#else // _MAC
//
// Ole types
//
#include <variant.h>
#include <dispatch.h>
typedef DWORD CLIPFORMAT;
typedef void * HMETAFILEPICT;
#define PHKEY unsigned long *
typedef DWORD REGSAM;
#define TYMED_ENHMF 64
//
// From wchar.h
//
#ifndef _WCTYPE_T_DEFINED
typedef wchar_t wint_t;
typedef wchar_t wctype_t;
#define _WCTYPE_T_DEFINED
#endif
//
// Wide-char string functions
//
int swprintf( wchar_t *buffer, const wchar_t *format, ... );
int _snwprintf( wchar_t *buffer, size_t count, const wchar_t *format, ... );
wchar_t towupper( wint_t c );
size_t wcslen( const wchar_t *string );
wchar_t *wcscpy( wchar_t *string1, const wchar_t *string2 );
wchar_t *wcsncpy( wchar_t *string1, const wchar_t *string2, size_t count );
int wcscmp( const wchar_t *string1, const wchar_t *string2 );
int _wcsicmp( const wchar_t *string1, const wchar_t *string2 );
wchar_t *wcscat( wchar_t *string1, const wchar_t *string2 );
wchar_t * __cdecl wcschr(const wchar_t *string, wchar_t ch);
wchar_t * __cdecl wcsrchr(const wchar_t *string, wchar_t ch);
wchar_t *wcstok( wchar_t *string1, const wchar_t *string2 );
int iswctype( wint_t c, wctype_t desc );
wchar_t * __cdecl wcsstr(const wchar_t *, const wchar_t *);
long __cdecl wcstol(const wchar_t *, wchar_t **, int);
//
// String conversion functions
//
WINBASEAPI
int
WINAPI
MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar);
WINBASEAPI
int
WINAPI
WideCharToMultiByte(
UINT CodePage,
DWORD dwFlags,
LPCWSTR lpWideCharStr,
int cchWideChar,
LPSTR lpMultiByteStr,
int cchMultiByte,
LPCSTR lpDefaultChar,
LPBOOL lpUsedDefaultChar);
#define CP_ACP 0
#define CP_OEMCP 1
#define CP_MACCP 2
//
// More miscellaneous string things
//
LANGID GetSystemDefaultLangID();
#ifndef UNICODE_ONLY
WINBASEAPI
DWORD
WINAPI
FormatMessageA(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId,
LPSTR lpBuffer,
DWORD nSize,
va_list *Arguments
);
#endif //!UNICODE_ONLY
#ifndef ANSI_ONLY
WINBASEAPI
DWORD
WINAPI
FormatMessageW(
DWORD dwFlags,
LPCVOID lpSource,
DWORD dwMessageId,
DWORD dwLanguageId,
LPWSTR lpBuffer,
DWORD nSize,
va_list *Arguments
);
#endif //!ANSI_ONLY
#ifdef UNICODE
#define FormatMessage FormatMessageW
#else
#define FormatMessage FormatMessageA
#endif // !UNICODE
//
// Network functions
//
typedef struct _NETRESOURCEA {
DWORD dwScope;
DWORD dwType;
DWORD dwDisplayType;
DWORD dwUsage;
LPSTR lpLocalName;
LPSTR lpRemoteName;
LPSTR lpComment ;
LPSTR lpProvider;
}NETRESOURCEA, *LPNETRESOURCEA;
typedef struct _NETRESOURCEW {
DWORD dwScope;
DWORD dwType;
DWORD dwDisplayType;
DWORD dwUsage;
LPWSTR lpLocalName;
LPWSTR lpRemoteName;
LPWSTR lpComment ;
LPWSTR lpProvider;
}NETRESOURCEW, *LPNETRESOURCEW;
#ifdef UNICODE
typedef NETRESOURCEW NETRESOURCE;
typedef LPNETRESOURCEW LPNETRESOURCE;
#else
typedef NETRESOURCEA NETRESOURCE;
typedef LPNETRESOURCEA LPNETRESOURCE;
#endif // UNICODE
#define RESOURCETYPE_ANY 0x00000000
#define RESOURCETYPE_DISK 0x00000001
#define RESOURCETYPE_PRINT 0x00000002
#define RESOURCETYPE_RESERVED 0x00000008
#define RESOURCETYPE_UNKNOWN 0xFFFFFFFF
DWORD APIENTRY
WNetAddConnection2A(
LPNETRESOURCEA lpNetResource,
LPCSTR lpPassword,
LPCSTR lpUserName,
DWORD dwFlags
);
DWORD APIENTRY
WNetAddConnection2W(
LPNETRESOURCEW lpNetResource,
LPCWSTR lpPassword,
LPCWSTR lpUserName,
DWORD dwFlags
);
#ifdef UNICODE
#define WNetAddConnection2 WNetAddConnection2W
#else
#define WNetAddConnection2 WNetAddConnection2A
#endif // !UNICODE
DWORD APIENTRY
WNetCancelConnectionA(
LPCSTR lpName,
BOOL fForce
);
DWORD APIENTRY
WNetCancelConnectionW(
LPCWSTR lpName,
BOOL fForce
);
#ifdef UNICODE
#define WNetCancelConnection WNetCancelConnectionW
#else
#define WNetCancelConnection WNetCancelConnectionA
#endif // !UNICODE
//
// Command line functions
//
LPSTR GetCommandLineA();
#define GetCommandLine GetCommandLineA
HRESULT MacInitializeCommandLine();
DWORD GetCurrentDirectoryA(
DWORD nBufferLength, // size, in characters, of directory buffer
LPTSTR lpBuffer // address of buffer for current directory
);
//
// Registry functions
//
// Turn off WLM's registry wrappers so we can talk directory to the API's
//
#undef RegCloseKey
#undef RegCreateKey
#undef RegOpenKey
#undef RegSetValue
#undef RegSetValueEx
#undef RegDeleteValue
#undef RegQueryValue
#undef RegQueryValueEx
#undef RegEnumKeyEx
#define RegSetValueEx CtRegSetValueEx
#define RegQueryValueEx CtRegQueryValueEx
LONG RegCreateKeyEx(
HKEY hKey, // handle of an open key
LPCTSTR lpSubKey, // address of subkey name
DWORD Reserved, // reserved
LPTSTR lpClass, // address of class string
DWORD dwOptions, // special options flag
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of key security structure
PHKEY phkResult, // address of buffer for opened handle
LPDWORD lpdwDisposition // address of disposition value buffer
);
LONG RegOpenKeyEx(
HKEY hKey, // handle of open key
LPCTSTR lpSubKey, // address of name of subkey to open
DWORD ulOptions, // reserved
REGSAM samDesired, // security access mask
PHKEY phkResult // address of handle of open key
);
LONG CtRegSetValueEx(
HKEY hKey, // handle of key to set value for
LPCTSTR lpValueName, // address of value to set
DWORD Reserved, // reserved
DWORD dwType, // flag for value type
CONST BYTE *lpData, // address of value data
DWORD cbData // size of value data
);
LONG RegQueryValueEx(
HKEY hKey, // handle of key to query
LPTSTR lpValueName, // address of name of value to query
LPDWORD lpReserved, // reserved
LPDWORD lpType, // address of buffer for value type
LPBYTE lpData, // address of data buffer
LPDWORD lpcbData // address of data buffer size
);
LONG RegEnumKeyEx(
HKEY hKey, // handle of key to enumerate
DWORD dwIndex, // index of subkey to enumerate
LPTSTR lpName, // address of buffer for subkey name
LPDWORD lpcbName, // address for size of subkey buffer
LPDWORD lpReserved, // reserved
LPTSTR lpClass, // address of buffer for class string
LPDWORD lpcbClass, // address for size of class buffer
PFILETIME lpftLastWriteTime // address for time key last written to
);
//
// Process ID's are completely different on the Mac then on Win32.
//
typedef ProcessSerialNumber ProcessId;
#define GetCurrentProcessId MacGetCurrentProcessId
#define OpenProcess MacOpenProcess
#undef CreateProcess
#define CreateProcess MacCreateProcess
struct MAC_PROCESS_INFORMATION
{
HANDLE hProcess;
HANDLE hThread;
ProcessId dwProcessId;
ProcessId dwThreadId;
};
typedef MAC_PROCESS_INFORMATION * LPMAC_PROCESS_INFORMATION;
ProcessId MacGetCurrentProcessId();
HANDLE MacOpenProcess(DWORD, BOOL, ProcessId);
BOOL MacCreateProcess(
LPCTSTR,
LPTSTR,
LPSECURITY_ATTRIBUTES,
LPSECURITY_ATTRIBUTES,
BOOL,
DWORD,
LPVOID,
LPCTSTR,
LPSTARTUPINFO,
LPMAC_PROCESS_INFORMATION);
#define PROCESS_INFORMATION MAC_PROCESS_INFORMATION
#define LPPROCESS_INFORMATION LPMAC_PROCESS_INFORMATION
//
// The WLM IsBadXXX functions just check for NULL, but NULL is ok if the
// byte count is 0.
//
// Use the weird trinary stuff to prevent warnings about constant boolean
// expressions if c is a constant.
//
#define IsBadReadPtr(p, c) ((c) ? IsBadReadPtr((p), (c)) : FALSE)
#define IsBadWritePtr(p, c) ((c) ? IsBadWritePtr((p), (c)) : FALSE)
//
// MacOle uses some old values for HRESULTs
// (like 0x80000008 instead of 0x80004005 for E_FAIL)
// This function just converts such old values to
// new ones
//
HRESULT FixHr (HRESULT hrOld);
//
// On the mac, only the foreground app
// can use the clipboard
//
void MacGetFocus ();
BOOL MacIsFullPath (LPCSTR lpszFileName);
#endif // _MAC
#endif // _MACPORT_H_