/*
 * 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"
#include "sensapi.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,
    IsDestinationReachableW,
    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
};
