/*
 *  kexbases\shell32\_shell32_stubs.c
 *
 *  Copyright (C) 2009, Xeno86
 *  Copyright (C) 2015, jumper
 *
 *  This file is part of KernelEx source code.
 *
 *  KernelEx is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published
 *  by the Free Software Foundation; version 2 of the License.
 *
 *  KernelEx 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 General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include "common.h"
#define ERROR_NI             120L
#define HRESULT_NI    0x80004001L
#define STATUS_NI     0xC0000002L


  seUNIMPL_FUNC(SHCreateShellItem,                4, ERROR_NI);
  rsUNIMPL_FUNC(SHOpenFolderAndSelectItems,     HRESULT_NI, 4);

  rsUNIMPL_FUNC(PathCleanupSpec,                        -1, 2);
   sUNIMPL_FUNC(SHCloneSpecialIDList,                       3);
  rsUNIMPL_FUNC(SHCoCreateInstance,              STATUS_NI, 5);
  rsUNIMPL_FUNC(SHDefExtractIconW,               STATUS_NI, 6);
  rsUNIMPL_FUNC(SHEnumerateUnreadMailAccountsW, HRESULT_NI, 4);
   sUNIMPL_FUNC(SHFindFiles,                                2);
  rsUNIMPL_FUNC(SHGetIconOverlayIndexW,                 -1, 2);
  rsUNIMPL_FUNC(SHGetKnownFolderPath,           0x80004005, 4);
  rsUNIMPL_FUNC(SHPathPrepareForWriteW,          STATUS_NI, 4);
   sUNIMPL_FUNC(SHRestricted,                               1);
  rsUNIMPL_FUNC(SHSetLocalizedName,              STATUS_NI, 3);
  rsUNIMPL_FUNC(SHSetUnreadMailCountW,          HRESULT_NI, 3);

 rs_UNIMPL_FUNC(SHCreateItemFromParsingName,    HRESULT_NI, 4); //ie9
  s_UNIMPL_FUNC(SHExtractIconsW,                            8); //ie8
 rs_UNIMPL_FUNC(SHGetImageList,                 HRESULT_NI, 3); //IE7 IEFrame.dll
 rs_UNIMPL_FUNC(SHLimitInputEdit,               HRESULT_NI, 2); //IE7 IEFrame.dll
 rs_UNIMPL_FUNC(SHOpenWithDialog,               HRESULT_NI, 2); //opera15
 rs_UNIMPL_FUNC(SHPropStgCreate,                HRESULT_NI, 8); // (685) IE7 URLmon.dll
 rs_UNIMPL_FUNC(SHPropStgReadMultiple,          HRESULT_NI, 5); // (688) IE7 URLmon.dll
 rs_UNIMPL_FUNC(SHPropStgWriteMultiple,         HRESULT_NI, 6); // (689) IE7 URLmon.dll
 rs_UNIMPL_FUNC(SHQueryUserNotificationState,   HRESULT_NI, 1); //v19
 rs_UNIMPL_FUNC(Shell_NotifyIconGetRect,        HRESULT_NI, 2); //v19

  s_UNIMPL_FUNC(ILAppendID,       3);
  s_UNIMPL_FUNC(ILClone,          1);
  s_UNIMPL_FUNC(ILCloneFirst,     1);
  s_UNIMPL_FUNC(ILCombine,        2);
  s_UNIMPL_FUNC(ILCreateFromPathW,1);
  s_UNIMPL_FUNC(ILFindChild,      2);
  s_UNIMPL_FUNC(ILFindLastID,     1);
  s_UNIMPL_FUNC(ILFree,           1);
  s_UNIMPL_FUNC(ILGetNext,        1);
  s_UNIMPL_FUNC(ILGetSize,        1);
  s_UNIMPL_FUNC(ILIsEqual,        2);
  s_UNIMPL_FUNC(ILIsParent,       3);
 rs_UNIMPL_FUNC(ILLoadFromStream, HRESULT_NI, 2); //FIXME: return COM error code
  s_UNIMPL_FUNC(ILRemoveLastID,   1);
 rs_UNIMPL_FUNC(ILSaveToStream,   HRESULT_NI, 2); // return OLE error

  
/*
Shell Functions
--------------------------------------------------------------------------------
_SHAllocShared
_SHLockShared
CallCPLEntry16
CanShareFolderW
CDefFolderMenu_Create2
CommandLineToArgvW
CPlApplet
CreateHardwareEventMoniker
DAD_AutoScroll
DAD_DragEnterEx
DAD_DragEnterEx2
DAD_DragLeave
DAD_DragMove
DAD_SetDragImage
DAD_ShowDragImage
DefScreenSaverProc
DefSubclassProc
DllGetVersion
DoEnvironmentSubst
DragAcceptFiles
DragFinish
DragQueryFile
DragQueryPoint
ExtractAssociatedIconEx
FindExecutable
GetFileNameFromBrowse
GetMenuContextHelpId
GetWindowContextHelpId
GetWindowSubclass
ILAppendID
ILClone
ILCloneFirst
ILCombine
ILCreateFromPathW
ILFindChild
ILFindLastID
ILFree
ILGetNext
ILGetSize
ILIsEqual
ILIsParent
ILLoadFromStream
ILRemoveLastID
ILSaveToStream
InetIsOffline
IsNetDrive
IsThemeDialogTextureEnabled
IsUserAnAdmin
MIMEAssociationDialog
OpenRegStream
PassportWizardRunDll
PathCleanupSpec
PathGetShortPath
PathIsExe
PathIsSlow
PathMakeUniqueName
PathProcessCommand
PathResolve
PathYetAnotherMakeUniqueName
PerUserInit
PickIconDlg
PifMgr_CloseProperties
PifMgr_GetProperties
PifMgr_OpenProperties
PifMgr_SetProperties
ReadCabinetState
RealDriveType
RegisterDialogClasses
RemoveWindowSubclass
RestartDialog
RestartDialogEx
ScreenSaverConfigureDialog
ScreenSaverProc
SetMenuContextHelpId
SetWindowContextHelpId
SetWindowSubclass
SHAddFromPropSheetExtArray
SHAddToRecentDocs
SHAlloc
SHAppBarMessage
SHBindToParent
SHBrowseForFolder
SHChangeNotification_Lock
SHChangeNotification_Unlock
SHChangeNotify
SHChangeNotifyDeregister
SHChangeNotifyRegister
SHCloneSpecialIDList
SHCLSIDFromString
SHCoCreateInstance
SHCreateDirectory
SHCreateDirectoryEx
SHCreateFileExtractIcon
SHCreateProcessAsUserW
SHCreatePropSheetExtArray
SHCreateQueryCancelAutoPlayMoniker
SHCreateShellFolderView
SHCreateShellFolderViewEx
SHCreateShellItem
SHCreateStdEnumFmtEtc
SHDefExtractIcon
SHDestroyPropSheetExtArray
SHDoDragDrop
Shell_GetCachedImageIndex
Shell_GetImageLists
Shell_MergeMenus
Shell_NotifyIcon
ShellAbout
ShellExecute
ShellExecuteEx
ShellMessageBox
SHEmptyRecycleBin
SHEnableServiceObject
SHEnumerateUnreadMailAccounts
SHFileOperation
SHFind_InitMenuPopup
SHFindFiles
SHFlushClipboard
SHFlushSFCache
SHFormatDrive
SHFree
SHFreeNameMappings
_SHFreeShared
SHGetAttributesFromDataObject
SHGetDataFromIDList
SHGetDesktopFolder
SHGetDiskFreeSpace
SHGetFileInfo
SHGetFolderLocation
SHGetFolderPath
SHGetFolderPathAndSubDir
SHGetIconOverlayIndex
SHGetImageList
SHGetInstanceExplorer
SHGetMalloc
SHGetNewLinkInfo
SHGetPathFromIDList
SHGetRealIDL
SHGetSetFolderCustomSettings
SHGetSetSettings
SHGetSettings
SHGetShellStyleHInstance
SHGetSpecialFolderLocation
SHGetSpecialFolderPath
SHGetUnreadMailCount
SHGetViewStatePropertyBag
SHHandleUpdateImage
SHILCreateFromPath
SHInvokePrinterCommand
SHIsFileAvailableOffline
SHLimitInputEdit
SHLoadInProc
SHLoadNonloadedIconOverlayIdentifiers
SHLoadOLE
SHMapIDListToImageListIndexAsync
SHMapPIDLToSystemImageListIndex
SHMultiFileProperties
SHObjectProperties 
SHOpenFolderAndSelectItems
SHOpenPropSheetW
ShowShareFolderUIW
SHParseDisplayName
SHPathPrepareForWrite
SHPropStgCreate
SHPropStgReadMultiple
SHPropStgWriteMultiple
SHQueryRecycleBin
SHReplaceFromPropSheetExtArray
SHRestricted
SHSetFolderPath
SHSetInstanceExplorer
SHSetLocalizedName
SHSetUnreadMailCount
SHShellFolderView_Message
SHSimpleIDListFromPath
SHStartNetConnectionDialog
SHTestTokenMembership
SHUnlockShared
SHUpdateImage
SHValidateUNC
SignalFileOpen
SoftwareUpdateMessageBox
TranslateURL
UpdateAllDesktopSubscriptions
URLAssociationDialog
WinExecError
WinHelp
WriteCabinetState
--------------------------------------------------------------------------------
Related Topics
Shell Functions Legacy Information
--------------------------------------------------------------------------------
*/