/*
 * Implementation of the unicows dll
 *
 * Copyright (C) 2003 Alexandre Julliard
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include <stdarg.h>

#include "windef.h"
#include "winbase.h"
#include "winreg.h"
#include "winnls.h"
#include "wingdi.h"
#include "winuser.h"
#include "winver.h"
#include "winspool.h"
#include "commdlg.h"
#include "wincrypt.h"
#include "ddeml.h"
#include "wincon.h"
#include "oledlg.h"
#include "ras.h"
#include "sspi.h"
#include "mmsystem.h"
#include "shlobj.h"
#include "shellapi.h"
#include "vfw.h"
#include "winnetwk.h"

/* Create a dummy reference to every function we need so that
 * the linker will import them.
 */
const void *dummy_references[] =
{
    AcquireCredentialsHandleW,
    AddAtomW,
    AddFontResourceW,
    AddJobW,
    AddMonitorW,
    AddPortW,
    AddPrinterDriverW,
    AddPrinterW,
    AddPrintProcessorW,
    AddPrintProvidorW,
    AdvancedDocumentPropertiesW,
    AppendMenuW,
    BeginUpdateResourceA,
    BeginUpdateResourceW,
    BroadcastSystemMessageW,
    BuildCommDCBAndTimeoutsW,
    BuildCommDCBW,
    CallMsgFilterW,
    CallNamedPipeW,
    CallWindowProcA,
    CallWindowProcW,
    ChangeDisplaySettingsExW,
    ChangeDisplaySettingsW,
    ChangeMenuW,
    CharLowerBuffW,
    CharLowerW,
    CharNextW,
    CharPrevW,
    CharToOemBuffW,
    CharToOemW,
    CharUpperBuffW,
    CharUpperW,
    ChooseColorW,
    ChooseFontW,
    CommConfigDialogW,
    CompareStringW,
    ConfigurePortW,
    CopyAcceleratorTableW,
    CopyEnhMetaFileW,
    CopyFileExW ,
    CopyFileW,
    CopyMetaFileW,
    CreateAcceleratorTableW,
    CreateColorSpaceW,
    CreateDCW,
    CreateDialogIndirectParamW,
    CreateDialogParamW,
    CreateDirectoryExW,
    CreateDirectoryW,
    CreateEnhMetaFileW,
    CreateEventW,
    CreateFileMappingW,
    CreateFileW,
    CreateFontIndirectW,
    CreateFontW,
    CreateICW,
    CreateMDIWindowW,
    CreateMailslotW,
    CreateMetaFileW,
    CreateMutexW,
    CreateNamedPipeW,
    CreateProcessW,
    CreateScalableFontResourceW,
    CreateSemaphoreW,
    CreateWaitableTimerW,
    CreateWindowExW,
    CryptAcquireContextW,
    CryptEnumProviderTypesW,
    CryptEnumProvidersW,
    CryptGetDefaultProviderW,
    CryptSetProviderExW,
    CryptSetProviderW,
    CryptSignHashW,
    CryptVerifySignatureW,
    DdeConnect,
    DdeConnectList,
    DdeCreateStringHandleW,
    DdeInitializeW,
    DdeQueryConvInfo,
    DdeQueryStringW,
    DefDlgProcW,
    DefFrameProcW,
    DefMDIChildProcW,
    DefWindowProcW,
    DeleteFileW,
    DeleteMonitorW,
    DeletePortW,
    DeletePrinterDriverW,
    DeletePrintProcessorW,
    DeletePrintProvidorW,
    DeviceCapabilitiesW,
    DialogBoxIndirectParamW,
    DialogBoxParamW,
    DispatchMessageW,
    DlgDirListComboBoxW,
    DlgDirListW,
    DlgDirSelectComboBoxExW,
    DlgDirSelectExW,
    DocumentPropertiesW,
    DragQueryFileW,
    DrawStateW,
    DrawTextExW,
    DrawTextW,
    EnableWindow,
    EndUpdateResourceA,
    EndUpdateResourceW,
    EnumCalendarInfoExW,
    EnumCalendarInfoW,
    EnumClipboardFormats,
    EnumDateFormatsExW,
    EnumDateFormatsW,
    EnumDisplayDevicesW,
    EnumDisplaySettingsExW,
    EnumDisplaySettingsW,
    EnumFontFamiliesExW,
    EnumFontFamiliesW,
    EnumFontsW,
    EnumICMProfilesW,
    EnumMonitorsW,
    EnumPortsW,
    EnumPrintProcessorDatatypesW,
    EnumPrintProcessorsW,
    EnumPrinterDriversW,
    EnumPrintersW,
    EnumPropsA,
    EnumPropsExA,
    EnumPropsExW,
    EnumPropsW,
    EnumSystemCodePagesW,
    EnumSystemLocalesW,
    EnumTimeFormatsW,
    EnumerateSecurityPackagesW,
    ExpandEnvironmentStringsW,
    ExtTextOutW,
    ExtractIconExW,
    ExtractIconW,
    FatalAppExitW,
    FillConsoleOutputCharacterW,
    FindAtomW,
    FindExecutableW,
    FindFirstChangeNotificationW,
    FindFirstFileW,
    FindNextFileW,
    FindResourceExW,
    FindResourceW,
    FindTextW,
    FindWindowExW,
    FindWindowW,
    FormatMessageW,
    FreeContextBuffer,
    FreeEnvironmentStringsW,
    GetAltTabInfoW,
    GetAtomNameW,
    GetCPInfo,
    GetCPInfoExW,
    GetCalendarInfoW,
    GetCharABCWidthsFloatW,
    GetCharABCWidthsW,
    GetCharWidth32W,
    GetCharWidthFloatW,
    GetCharWidthW,
    GetCharacterPlacementW,
    GetClassInfoExW,
    GetClassInfoW,
    GetClassLongW,
    GetClassNameW,
    GetClipboardData,
    GetClipboardFormatNameW,
    GetComputerNameW,
    GetConsoleTitleW,
    GetCurrencyFormatW,
    GetCurrentDirectoryW,
    GetCurrentHwProfileW,
    GetDateFormatW,
    GetDefaultCommConfigW,
    GetDiskFreeSpaceExW ,
    GetDiskFreeSpaceW,
    GetDlgItemTextW,
    GetDriveTypeW,
    GetEnhMetaFileDescriptionW,
    GetEnhMetaFileW,
    GetEnvironmentStringsW,
    GetEnvironmentVariableW,
    GetFileAttributesExW,
    GetFileAttributesW,
    GetFileTitleW,
    GetFileVersionInfoSizeW,
    GetFileVersionInfoW,
    GetFullPathNameW,
    GetGlyphOutlineW,
    GetICMProfileW,
    GetJobW,
    GetKerningPairsW,
    GetKeyNameTextW,
    GetKeyboardLayoutNameW,
    GetLocaleInfoW,
    GetLogColorSpaceW,
    GetLogicalDriveStringsW,
    GetLongPathNameW ,
    GetMenuItemInfoW,
    GetMenuStringW,
    GetMessageW,
    GetMetaFileW,
    GetModuleFileNameW,
    GetModuleHandleW,
    GetMonitorInfoW,
    GetNamedPipeHandleStateW,
    GetNumberFormatW,
    GetObjectW,
    GetOpenFileNamePreviewW,
    GetOpenFileNameW,
    GetOutlineTextMetricsW,
    GetPrinterDataW,
    GetPrinterDriverDirectoryW,
    GetPrinterDriverW,
    GetPrinterW,
    GetPrintProcessorDirectoryW,
    GetPrivateProfileIntW,
    GetPrivateProfileSectionNamesW,
    GetPrivateProfileSectionW,
    GetPrivateProfileStringW,
    GetPrivateProfileStructW,
    GetProcAddress,
    GetProfileIntW,
    GetProfileSectionW,
    GetProfileStringW,
    GetPropA,
    GetPropW,
    GetSaveFileNamePreviewW,
    GetSaveFileNameW,
    GetShortPathNameW,
    GetStartupInfoW,
    GetStringTypeExW,
    GetStringTypeW,
    GetSystemDirectoryW,
    GetSystemWindowsDirectoryW,
    GetTabbedTextExtentW,
    GetTempFileNameW,
    GetTempPathW,
    GetTextExtentExPointW,
    GetTextExtentPoint32W,
    GetTextExtentPointW,
    GetTextFaceW,
    GetTextMetricsW,
    GetTimeFormatW,
    GetUserNameW,
    GetVersionExW,
    GetVolumeInformationW,
    GetWindowLongA,
    GetWindowLongW,
    GetWindowModuleFileNameW,
    GetWindowTextLengthW,
    GetWindowTextW,
    GetWindowsDirectoryW,
    GlobalAddAtomW,
    GlobalFindAtomW,
    GlobalGetAtomNameW,
    GrayStringW,
    InitSecurityInterfaceW,
    InitializeSecurityContextW,
    InsertMenuItemW,
    InsertMenuW,
    IsBadStringPtrW,
    IsCharAlphaNumericW,
    IsCharAlphaW,
    IsCharLowerW,
    IsCharUpperW,
    IsClipboardFormatAvailable,
    IsDialogMessageW,
    IsTextUnicode,
    IsValidCodePage,
    IsWindowUnicode,
    LCMapStringW,
    LoadAcceleratorsW,
    LoadBitmapW,
    LoadCursorFromFileW,
    LoadCursorW,
    LoadIconW,
    LoadImageW,
    LoadKeyboardLayoutW,
    LoadLibraryExW,
    LoadLibraryW,
    LoadMenuIndirectW,
    LoadMenuW,
    LoadStringW,
    MCIWndCreateW,
    MapVirtualKeyExW,
    MapVirtualKeyW,
    MessageBoxExW,
    MessageBoxIndirectW,
    MessageBoxW,
    ModifyMenuW,
    MoveFileW,
    MultiByteToWideChar,
    MultinetGetConnectionPerformanceW,
    OemToCharBuffW,
    OemToCharW,
    OleUIAddVerbMenuW,
    OleUIBusyW,
    OleUIChangeIconW,
    OleUIChangeSourceW,
    OleUIConvertW,
    OleUIEditLinksW,
    OleUIInsertObjectW,
    OleUIObjectPropertiesW,
    OleUIPasteSpecialW,
    OleUIPromptUserW,
    OleUIUpdateLinksW,
    OpenEventW,
    OpenFileMappingW,
    OpenMutexW,
    OpenPrinterW,
    OpenSemaphoreW,
    OpenWaitableTimerW,
    OutputDebugStringW,
    PageSetupDlgW,
    PeekConsoleInputW,
    PeekMessageW,
    PlaySoundW,
    PolyTextOutW,
    PostMessageW,
    PostThreadMessageW,
    PrintDlgW,
    QueryContextAttributesW,
    QueryCredentialsAttributesW,
    QueryDosDeviceW,
    QuerySecurityPackageInfoW,
    RasConnectionNotificationW,
    RasCreatePhonebookEntryW,
    RasDeleteEntryW,
    RasDeleteSubEntryW,
    RasDialW,
    RasEditPhonebookEntryW,
    RasEnumConnectionsW,
    RasEnumDevicesW,
    RasEnumEntriesW,
    RasGetConnectStatusW,
    RasGetEntryDialParamsW,
    RasGetEntryPropertiesW,
    RasGetErrorStringW,
    RasGetProjectionInfoW,
    RasHangUpW,
    RasRenameEntryW,
    RasSetEntryDialParamsW,
    RasSetEntryPropertiesW,
    RasSetSubEntryPropertiesW,
    RasValidateEntryNameW,
    ReadConsoleInputW,
    ReadConsoleOutputCharacterW,
    ReadConsoleOutputW,
    ReadConsoleW,
    RegConnectRegistryW,
    RegCreateKeyExW,
    RegCreateKeyW,
    RegDeleteKeyW,
    RegDeleteValueW,
    RegEnumKeyExW,
    RegEnumKeyW,
    RegEnumValueW,
    RegLoadKeyW,
    RegOpenKeyExW,
    RegOpenKeyW,
    RegQueryInfoKeyW,
    RegQueryMultipleValuesW,
    RegQueryValueExW,
    RegQueryValueW,
    RegReplaceKeyW,
    RegSaveKeyW,
    RegSetValueExW,
    RegSetValueW,
    RegUnLoadKeyW,
    RegisterClassExW,
    RegisterClassW,
    RegisterClipboardFormatW,
    RegisterDeviceNotificationW,
    RegisterWindowMessageW,
    RemoveDirectoryW,
    RemoveFontResourceW,
    RemovePropA,
    RemovePropW,
    ReplaceTextW,
    ResetDCW,
    ResetPrinterW,
    SHBrowseForFolderW,
    SHChangeNotify ,
    SHFileOperationW,
    SHGetFileInfoW,
    SHGetNewLinkInfoW,
    SHGetPathFromIDListW,
    ScrollConsoleScreenBufferW,
    SearchPathW,
    SendDlgItemMessageW,
    SendMessageCallbackW,
    SendMessageTimeoutW,
    SendMessageW,
    SendNotifyMessageW,
    SetCalendarInfoW,
    SetClassLongW,
    SetComputerNameW,
    SetConsoleTitleW,
    SetCurrentDirectoryW,
    SetDefaultCommConfigW,
    SetDlgItemTextW,
    SetEnvironmentVariableW,
    SetFileAttributesW,
    SetICMProfileW,
    SetJobW,
    SetLocaleInfoW,
    SetMenuItemInfoW,
    SetPrinterDataW,
    SetPrinterW,
    SetPropA,
    SetPropW,
    SetVolumeLabelW,
    SetWindowLongA,
    SetWindowLongW,
    SetWindowTextW,
    SetWindowsHookExW,
    SetWindowsHookW,
    ShellAboutW,
    ShellExecuteExW ,
    ShellExecuteW ,
    Shell_NotifyIconW,
    StartDocPrinterW,
    StartDocW,
    SystemParametersInfoW,
    TabbedTextOutW,
    TextOutW,
    TranslateAcceleratorW,
    UnregisterClassW,
    UpdateICMRegKeyW,
    UpdateResourceA,
    UpdateResourceW,
    VerFindFileW,
    VerInstallFileW,
    VerLanguageNameW,
    VerQueryValueW,
    VkKeyScanExW,
    VkKeyScanW,
    WNetAddConnection2W,
    WNetAddConnection3W,
    WNetAddConnectionW,
    WNetCancelConnection2W,
    WNetCancelConnectionW,
    WNetConnectionDialog1W,
    WNetDisconnectDialog1W,
    WNetEnumResourceW,
    WNetGetConnectionW,
    WNetGetLastErrorW,
    WNetGetNetworkInformationW,
    WNetGetProviderNameW,
    WNetGetResourceInformationW,
    WNetGetResourceParentW,
    WNetGetUniversalNameW ,
    WNetGetUserW,
    WNetOpenEnumW,
    WNetUseConnectionW,
    WaitNamedPipeW ,
    WideCharToMultiByte,
    WinHelpW,
    WriteConsoleInputW,
    WriteConsoleOutputCharacterW,
    WriteConsoleOutputW,
    WriteConsoleW,
    WritePrivateProfileSectionW,
    WritePrivateProfileStringW,
    WritePrivateProfileStructW,
    WriteProfileSectionW,
    WriteProfileStringW,
    auxGetDevCapsW,
    capCreateCaptureWindowW,
    capGetDriverDescriptionW,
    joyGetDevCapsW,
    lstrcatW,
    lstrcmpW,
    lstrcmpiW,
    lstrcpyW,
    lstrcpynW,
    lstrlenW,
    mciGetDeviceIDW,
    mciGetErrorStringW,
    mciSendCommandW,
    mciSendStringW,
    midiInGetDevCapsW,
    midiInGetErrorTextW,
    midiOutGetDevCapsW,
    midiOutGetErrorTextW,
    mixerGetControlDetailsW,
    mixerGetDevCapsW,
    mixerGetLineControlsW,
    mixerGetLineInfoW,
    mmioInstallIOProcW,
    mmioOpenW,
    mmioRenameW,
    mmioStringToFOURCCW,
    sndPlaySoundW,
    waveInGetDevCapsW,
    waveInGetErrorTextW,
    waveOutGetDevCapsW,
    waveOutGetErrorTextW,
    wsprintfW,
    wvsprintfW
};
