63 ERR(
"pidl %p is not a drive\n", pidl);
66 return ::GetDriveTypeA(szDrive);
74#define RETRY_SLEEP 250
77 DWORD dwError, dwBytesReturned;
127 0, &dwBytesReturned,
NULL);
198 LONG_PTR nProp = nDriveNumber | 0x7F00;
204 for (
INT n = 0;
n < old_stubs.GetSize(); ++
n)
206 HWND hwndStub = old_stubs[
n];
231 ERR(
"StubWindow32 creation failed\n");
244 stub.DestroyWindow();
288 char szDrive[8] = {0};
289 if (!
_ILGetDrive(apidl[0], szDrive,
sizeof(szDrive)))
291 ERR(
"pidl is not a drive\n");
301#define CMDID_FORMAT 0
303#define CMDID_DISCONNECT 2
307#define CMDID_FORMAT 1
309#define CMDID_DISCONNECT 3
349 WCHAR wszBuf[4] =
L"A:\\";
350 wszBuf[0] = (
WCHAR)szDrive[0];
406 WCHAR szFormat[128], szMessage[128];
454 wszAutoRunInfPath) && wszValue[0] != 0)
490 wszAutoRunInfPath) && wszTemp[0] != 0)
503 CComPtr<IDefaultExtractIconInit> initIcon;
519 initIcon->SetNormalIcon(wTemp, icon_idx);
524 initIcon->SetNormalIcon(wTemp, icon_idx);
539 return initIcon->QueryInterface(
riid, ppvOut);
551 WCHAR wszDriveName[] = {
'A',
':',
'\\',
'\0'};
554 while (wszDriveName[0] <=
'Z')
556 if(dwDrivemap & 0x00000001L)
559 dwDrivemap = dwDrivemap >> 1;
587 SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
588 SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
590 SFGAO_HASSUBFOLDER | SFGAO_FOLDER | SFGAO_CANLINK;
592 SFGAO_HASSUBFOLDER | SFGAO_FILESYSTEM | SFGAO_FOLDER | SFGAO_FILESYSANCESTOR |
593 SFGAO_DROPTARGET | SFGAO_HASPROPSHEET | SFGAO_CANRENAME | SFGAO_CANLINK;
602 TRACE (
"-- destroying IShellFolder(%p)\n",
this);
614 L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}",
632 TRACE(
"(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
this,
633 hwndOwner, pbc, lpszDisplayName,
debugstr_w (lpszDisplayName),
634 pchEaten, ppidl, pdwAttributes);
641 if (lpszDisplayName[0] ==
':' && lpszDisplayName[1] ==
':')
642 return m_regFolder->ParseDisplayName(hwndOwner, pbc, lpszDisplayName, pchEaten, ppidl, pdwAttributes);
645 if (nDriveNumber < 0)
658 if (lpszDisplayName[2] ==
L'\\')
660 szNext = &lpszDisplayName[3];
663 if (szNext && *szNext)
666 (
LPOLESTR) szNext, pchEaten, pdwAttributes);
671 if (pdwAttributes && *pdwAttributes)
678 *pdwAttributes &= ~SFGAO_CANRENAME;
681 m_regFolder->GetAttributesOf(1, &pidlTemp, pdwAttributes);
683 ERR(
"Got an unknown pidl here!\n");
689 TRACE (
"(%p)->(-- ret=0x%08x)\n",
this,
hr);
699 CComPtr<IEnumIDList> pRegEnumerator;
710 TRACE(
"(%p)->(pidl=%p,%p,%s,%p)\n",
this,
721 PERSIST_FOLDER_TARGET_INFO pfti = {0};
722 pfti.dwAttributes = -1;
724 pfti.szTargetParsingName[0] = *pchDrive;
725 pfti.szTargetParsingName[1] =
L':';
726 pfti.szTargetParsingName[2] =
L'\\';
731 &CLSID_ShellFSFolder,
745 FIXME(
"(%p)->(pidl=%p,%p,%s,%p) stub\n",
this,
760 if (!pidl1 || !pidl2)
762 ERR(
"Got null pidl pointer (%Ix %p %p)!\n",
lParam, pidl1, pidl2);
793 ULARGE_INTEGER Drive1Available, Drive1Total, Drive2Available, Drive2Total;
831 CComPtr<IShellView> pShellView;
834 TRACE(
"(%p)->(hwnd=%p,%s,%p)\n",
this,
844 WARN(
"IDropTarget not implemented\n");
854 dcm.
hwnd = hwndOwner;
870 TRACE (
"-- (%p)->(interface=%p)\n",
this, ppvOut);
879 TRACE (
"(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
880 this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
893 for (
UINT i = 0;
i < cidl; ++
i)
900 *rgfInOut &= ~SFGAO_CANRENAME;
907 ERR(
"Got unknown pidl type!\n");
912 *rgfInOut &= ~SFGAO_VALIDATE;
914 TRACE (
"-- result=0x%08x\n", *rgfInOut);
937 TRACE(
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
this,
966 CComPtr<IShellFolder> psfChild;
971 return psfChild->CreateViewObject(
NULL,
riid, ppvOut);
980 TRACE (
"(%p)->hr=0x%08x\n",
this,
hr);
992 TRACE (
"(%p)->(pidl=%p,0x%08x,%p)\n",
this, pidl,
dwFlags, strRet);
1008 ERR(
"Wrong pidl type\n");
1022 WCHAR wszDrive[18] = {0};
1029 DWORD dwVolumeSerialNumber, dwMaximumComponentLength, dwFileSystemFlags;
1033 &dwVolumeSerialNumber,
1034 &dwMaximumComponentLength, &dwFileSystemFlags,
NULL, 0);
1060 if (dwFileSystemFlags >
MAX_PATH - 7)
1066 wszDrive[2] =
L'\0';
1067 wcscat (pszPath, wszDrive);
1114 FIXME (
"(%p)\n",
this);
1120 FIXME (
"(%p)\n",
this);
1126 TRACE (
"(%p)\n",
this);
1137 TRACE (
"(%p)\n",
this);
1147 FIXME (
"(%p)\n",
this);
1155 TRACE (
"(%p)->(%p %i %p)\n",
this, pidl, iColumn, psd);
1172 return m_regFolder->GetDetailsOf(pidl, iColumn, psd);
1175 return SHSetStrRet(&psd->
str,
"");
1215 hr = SHSetStrRet(&psd->
str,
"");
1226 FIXME(
"(%p)\n",
this);
1235 TRACE (
"(%p)\n",
this);
1240 *lpClassId = CLSID_MyComputer;
1259 TRACE(
"(%p)->(%p)\n",
this, pidl);
1285 L"shell32.dll,Control_RunDLL sysdm.cpl",
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
static HRESULT getIconLocationForDrive(IShellFolder *psf, PCITEMID_CHILD pidl, UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
BOOL _ILGetDriveType(LPCITEMIDLIST pidl)
static BOOL CALLBACK EnumStubProc2(HWND hwnd, LPARAM lParam)
static BOOL CALLBACK EnumStubProc(HWND hwnd, LPARAM lParam)
HRESULT CDrivesContextMenu_CreateInstance(PCIDLIST_ABSOLUTE pidlFolder, HWND hwnd, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, IShellFolder *psf, IContextMenu **ppcm)
static HRESULT DoFormatDrive(HWND hwnd, UINT nDriveNumber)
static BOOL TryToLockOrUnlockDrive(HANDLE hDrive, BOOL bLock)
HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf, HWND hwnd, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
static BOOL DoEjectDrive(const WCHAR *physical, UINT nDriveType, INT *pnStringID)
static const DWORD dwComputerAttributes
static HRESULT getLabelForDrive(LPWSTR wszPath, LPWSTR wszLabel)
static unsigned __stdcall format_drive_thread(void *args)
static int iDriveIconIds[7]
static const shvheader MyComputerSFHeader[]
static int iDriveTypeIds[7]
BOOL IsDriveFloppyA(LPCSTR pszDriveRoot)
static const DWORD dwDriveAttributes
static const DWORD dwControlPanelAttributes
HRESULT CDrivesExtractIcon_CreateInstance(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
HRESULT CRegFolder_CreateInstance(const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
HRESULT WINAPI Initialize(HWND hwndOwner, DWORD dwFlags, IEnumIDList *pRegEnumerator)
virtual HRESULT WINAPI BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList)
virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI GetCurFolder(PIDLIST_ABSOLUTE *pidl)
virtual HRESULT WINAPI ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes)
virtual HRESULT WINAPI BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut)
virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum)
virtual HRESULT WINAPI GetClassID(CLSID *lpClassId)
CComPtr< IShellFolder2 > m_regFolder
virtual HRESULT WINAPI GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd)
virtual HRESULT WINAPI CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2)
virtual HRESULT WINAPI Initialize(PCIDLIST_ABSOLUTE pidl)
virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut)
HRESULT WINAPI FinalConstruct()
virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
virtual HRESULT WINAPI SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut)
virtual HRESULT WINAPI GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut)
virtual HRESULT WINAPI GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv)
virtual HRESULT WINAPI GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet)
virtual HRESULT WINAPI MapColumnToSCID(UINT column, SHCOLUMNID *pscid)
virtual HRESULT WINAPI CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam)
virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid)
BOOL AddToEnumList(LPITEMIDLIST pidl)
HRESULT AppendItemsFromEnumerator(IEnumIDList *pEnum)
#define ERROR_INVALID_FUNCTION
void pdump(LPCITEMIDLIST pidl)
const char * shdebugstr_guid(const struct _GUID *id)
BOOL WINAPI DeviceIoControl(IN HANDLE hDevice, IN DWORD dwIoControlCode, IN LPVOID lpInBuffer OPTIONAL, IN DWORD nInBufferSize OPTIONAL, OUT LPVOID lpOutBuffer OPTIONAL, IN DWORD nOutBufferSize OPTIONAL, OUT LPDWORD lpBytesReturned OPTIONAL, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define IDS_SHV_COLUMN_TYPE
#define IDS_SHV_COLUMN_NAME
#define DFM_MERGECONTEXTMENU
#define DFM_INVOKECOMMAND
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
#define INVALID_HANDLE_VALUE
#define stricmp(_String1, _String2)
#define FAILED_UNEXPECTEDLY(hr)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
UINT WINAPI GetDriveTypeA(IN LPCSTR lpRootPathName)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
BOOL WINAPI GetDiskFreeSpaceExA(IN LPCSTR lpDirectoryName OPTIONAL, OUT PULARGE_INTEGER lpFreeBytesAvailableToCaller, OUT PULARGE_INTEGER lpTotalNumberOfBytes, OUT PULARGE_INTEGER lpTotalNumberOfFreeBytes)
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
BOOL WINAPI GetVolumeInformationA(IN LPCSTR lpRootPathName, IN LPSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
BOOL WINAPI SetVolumeLabelW(IN LPCWSTR lpRootPathName, IN LPCWSTR lpVolumeName OPTIONAL)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
HRESULT WINAPI Shell_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdtobj)
void WINAPI SHFree(LPVOID pv)
int WINAPI PathGetDriveNumberW(const WCHAR *path)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
int WINAPI PathParseIconLocationW(LPWSTR lpszPath)
BOOL WINAPI PathIsRelativeW(LPCWSTR lpszPath)
LPSTR WINAPI StrFormatByteSize64A(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
BOOL SH_ShowDriveProperties(WCHAR *pwszDrive, IDataObject *pDataObj)
DWORD WINAPI SHFormatDrive(HWND hwnd, UINT drive, UINT fmtID, UINT options)
BOOL IsDriveFloppyA(LPCSTR pszDriveRoot)
static BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
WCHAR swShell32Name[MAX_PATH]
#define FILE_READ_ONLY_VOLUME
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define COM_INTERFACE_ENTRY_IID(iid, x)
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
#define FSCTL_LOCK_VOLUME
#define FSCTL_UNLOCK_VOLUME
#define FSCTL_DISMOUNT_VOLUME
#define DEFAULT_UNREACHABLE
#define IOCTL_STORAGE_EJECT_MEDIA
#define IOCTL_STORAGE_MEDIA_REMOVAL
interface IBindCtx * LPBC
const GUID IID_IDataObject
LPITEMIDLIST _ILCreateMyComputer(void)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
DWORD _ILGetDrive(LPCITEMIDLIST pidl, LPSTR pOut, UINT uSize)
LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
void _ILFreeaPidl(LPITEMIDLIST *apidl, UINT cidl)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
static const WCHAR szName[]
#define IsEqualIID(riid1, riid2)
_CRTIMP uintptr_t __cdecl _beginthreadex(_In_opt_ void *_Security, _In_ unsigned _StackSize, _In_ unsigned(__stdcall *_StartAddress)(void *), _In_opt_ void *_ArgList, _In_ unsigned _InitFlag, _Out_opt_ unsigned *_ThrdAddr)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
BOOL HCR_GetIconW(LPCWSTR szClass, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
#define MAKE_COMPARE_HRESULT(x)
HRESULT SHELL32_BindToSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidl, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
HRESULT SHELL32_GetDisplayNameOfChild(IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
HRESULT SHELL32_CompareChildren(IShellFolder2 *psf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
void AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
HRESULT SHELL32_CompareDetails(IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
HRESULT SH_GetApidlFromDataObject(IDataObject *pDataObject, PIDLIST_ABSOLUTE *ppidlfolder, PUITEMID_CHILD **apidlItems, UINT *pcidl)
HRESULT SHELL32_ParseNextElement(IShellFolder2 *psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST *pidlInOut, LPOLESTR szNext, DWORD *pEaten, DWORD *pdwAttributes)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
#define SHCNE_DRIVEREMOVED
#define SHCNE_MEDIAREMOVED
struct _SFV_CREATE SFV_CREATE
#define DFM_CMD_PROPERTIES
#define SHCNF_FLUSHNOWAIT
#define IDS_CANTDISMOUNTVOLUME
#define IDS_DRIVE_NETWORK
#define IDS_DRIVE_REMOVABLE
#define IDI_SHELL_3_14_FLOPPY
#define IDI_SHELL_NETDRIVE
#define IDS_CANTLOCKVOLUME
#define IDS_SHV_COLUMN_DISK_AVAILABLE
#define IDS_CANTSHOWPROPERTIES
#define IDS_CANTEJECTMEDIA
#define IDI_SHELL_RAMDISK
#define IDS_CANTDISCONNECT
#define IDI_SHELL_REMOVEABLE
#define IDS_SHV_COLUMN_DISK_CAPACITY
#define IDS_SHV_COLUMN_COMMENTS
ITEMIDLIST UNALIGNED * LPITEMIDLIST
ITEMID_CHILD UNALIGNED * PUITEMID_CHILD
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
VOID WINAPI DECLSPEC_HOTPATCH Sleep(IN DWORD dwMilliseconds)
DWORD WINAPI GetLastError(void)
DWORD WINAPI GetLogicalDrives(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define ERROR_CAN_NOT_COMPLETE
#define HRESULT_FROM_WIN32(x)
#define ERROR_INVALID_DRIVE
HMENU WINAPI CreatePopupMenu(void)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPIV wsprintfW(_Out_ LPWSTR, _In_ _Printf_format_string_ LPCWSTR,...)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
BOOL WINAPI EnumWindows(_In_ WNDENUMPROC lpEnumFunc, _In_ LPARAM lParam)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
BOOL WINAPI DestroyMenu(_In_ HMENU)
HWND WINAPI GetWindow(_In_ HWND, _In_ UINT)
int WINAPI GetClassNameW(_In_ HWND hWnd, _Out_writes_to_(nMaxCount, return) LPWSTR lpClassName, _In_ int nMaxCount)
#define MAKEINTRESOURCEW(i)
BOOL WINAPI BringWindowToTop(_In_ HWND)
DWORD WINAPI WNetCancelConnection2W(LPCWSTR lpName, DWORD dwFlags, BOOL fForce)
#define IID_PPV_ARG(Itype, ppType)