zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

shellapi.h (27252B) - Raw


      1 /**
      2  * This file is part of the mingw-w64 runtime package.
      3  * No warranty is given; refer to the file DISCLAIMER within this package.
      4  */
      5 #include <winapifamily.h>
      6 
      7 #ifndef _INC_SHELLAPI
      8 #define _INC_SHELLAPI
      9 
     10 #include <_mingw_unicode.h>
     11 #include <specstrings.h>
     12 
     13 #ifndef WINSHELLAPI
     14 #ifndef _SHELL32_
     15 #define WINSHELLAPI DECLSPEC_IMPORT
     16 #else
     17 #define WINSHELLAPI
     18 #endif
     19 #endif
     20 
     21 #ifndef SHSTDAPI
     22 #ifndef _SHELL32_
     23 #ifdef __cplusplus
     24 #define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
     25 #define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
     26 #else
     27 #define SHSTDAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
     28 #define SHSTDAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE
     29 #endif
     30 #else
     31 #define SHSTDAPI STDAPI
     32 #define SHSTDAPI_(type) STDAPI_(type)
     33 #endif
     34 #endif
     35 
     36 #ifndef SHDOCAPI
     37 #ifndef _SHDOCVW_
     38 #ifdef __cplusplus
     39 #define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
     40 #define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
     41 #else
     42 #define SHDOCAPI DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
     43 #define SHDOCAPI_(type) DECLSPEC_IMPORT type STDAPICALLTYPE
     44 #endif
     45 #else
     46 #define SHDOCAPI STDAPI
     47 #define SHDOCAPI_(type) STDAPI_(type)
     48 #endif
     49 #endif
     50 
     51 #ifndef _WIN64
     52 #include <pshpack1.h>
     53 #endif
     54 
     55 #ifdef __cplusplus
     56 extern "C" {
     57 #endif
     58 
     59 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
     60   DECLARE_HANDLE (HDROP);
     61 
     62 #define DragQueryFile __MINGW_NAME_AW(DragQueryFile)
     63 #define ShellExecute __MINGW_NAME_AW(ShellExecute)
     64 #define FindExecutable __MINGW_NAME_AW(FindExecutable)
     65 #define ShellAbout __MINGW_NAME_AW(ShellAbout)
     66 #define ExtractAssociatedIcon __MINGW_NAME_AW(ExtractAssociatedIcon)
     67 #define ExtractAssociatedIconEx __MINGW_NAME_AW(ExtractAssociatedIconEx)
     68 #define ExtractIcon __MINGW_NAME_AW(ExtractIcon)
     69 
     70   SHSTDAPI_(UINT) DragQueryFileA (HDROP hDrop, UINT iFile, LPSTR lpszFile, UINT cch);
     71   SHSTDAPI_(UINT) DragQueryFileW (HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch);
     72   SHSTDAPI_(WINBOOL) DragQueryPoint (HDROP hDrop, POINT *ppt);
     73   SHSTDAPI_(void) DragFinish (HDROP hDrop);
     74   SHSTDAPI_(void) DragAcceptFiles (HWND hWnd, WINBOOL fAccept);
     75   SHSTDAPI_(HINSTANCE) ShellExecuteA (HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd);
     76   SHSTDAPI_(HINSTANCE) ShellExecuteW (HWND hwnd, LPCWSTR lpOperation, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);
     77   SHSTDAPI_(HINSTANCE) FindExecutableA (LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult);
     78   SHSTDAPI_(HINSTANCE) FindExecutableW (LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult);
     79   SHSTDAPI_(INT) ShellAboutA (HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
     80   SHSTDAPI_(INT) ShellAboutW (HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, HICON hIcon);
     81   SHSTDAPI_(HICON) DuplicateIcon (HINSTANCE hInst, HICON hIcon);
     82   SHSTDAPI_(HICON) ExtractAssociatedIconA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIcon);
     83   SHSTDAPI_(HICON) ExtractAssociatedIconW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIcon);
     84   SHSTDAPI_(HICON) ExtractAssociatedIconExA (HINSTANCE hInst, LPSTR pszIconPath, WORD *piIconIndex, WORD *piIconId);
     85   SHSTDAPI_(HICON) ExtractAssociatedIconExW (HINSTANCE hInst, LPWSTR pszIconPath, WORD *piIconIndex, WORD *piIconId);
     86   SHSTDAPI_(HICON) ExtractIconA (HINSTANCE hInst, LPCSTR pszExeFileName, UINT nIconIndex);
     87   SHSTDAPI_(HICON) ExtractIconW (HINSTANCE hInst, LPCWSTR pszExeFileName, UINT nIconIndex);
     88 
     89   typedef struct _DRAGINFOA {
     90     UINT uSize;
     91     POINT pt;
     92     WINBOOL fNC;
     93     LPSTR lpFileList;
     94     DWORD grfKeyState;
     95   } DRAGINFOA,*LPDRAGINFOA;
     96 
     97   typedef struct _DRAGINFOW {
     98     UINT uSize;
     99     POINT pt;
    100     WINBOOL fNC;
    101     LPWSTR lpFileList;
    102     DWORD grfKeyState;
    103   } DRAGINFOW,*LPDRAGINFOW;
    104 
    105   __MINGW_TYPEDEF_AW(DRAGINFO)
    106   __MINGW_TYPEDEF_AW(LPDRAGINFO)
    107 
    108 #define ABM_NEW 0x00000000
    109 #define ABM_REMOVE 0x00000001
    110 #define ABM_QUERYPOS 0x00000002
    111 #define ABM_SETPOS 0x00000003
    112 #define ABM_GETSTATE 0x00000004
    113 #define ABM_GETTASKBARPOS 0x00000005
    114 #define ABM_ACTIVATE 0x00000006
    115 #define ABM_GETAUTOHIDEBAR 0x00000007
    116 #define ABM_SETAUTOHIDEBAR 0x00000008
    117 
    118 #define ABM_WINDOWPOSCHANGED 0x0000009
    119 #define ABM_SETSTATE 0x0000000a
    120 #if NTDDI_VERSION >= 0x06020000
    121 #define ABM_GETAUTOHIDEBAREX 0x0000000b
    122 #define ABM_SETAUTOHIDEBAREX 0x0000000c
    123 #endif
    124 
    125 #define ABN_STATECHANGE 0x0000000
    126 #define ABN_POSCHANGED 0x0000001
    127 #define ABN_FULLSCREENAPP 0x0000002
    128 #define ABN_WINDOWARRANGE 0x0000003
    129 
    130 #define ABS_AUTOHIDE 0x0000001
    131 #define ABS_ALWAYSONTOP 0x0000002
    132 
    133 #define ABE_LEFT 0
    134 #define ABE_TOP 1
    135 #define ABE_RIGHT 2
    136 #define ABE_BOTTOM 3
    137 
    138   typedef struct _AppBarData {
    139     DWORD cbSize;
    140     HWND hWnd;
    141     UINT uCallbackMessage;
    142     UINT uEdge;
    143     RECT rc;
    144     LPARAM lParam;
    145   } APPBARDATA,*PAPPBARDATA;
    146 
    147   SHSTDAPI_(UINT_PTR) SHAppBarMessage (DWORD dwMessage, PAPPBARDATA pData);
    148   SHSTDAPI_(DWORD) DoEnvironmentSubstA (LPSTR pszSrc, UINT cchSrc);
    149   SHSTDAPI_(DWORD) DoEnvironmentSubstW (LPWSTR pszSrc, UINT cchSrc);
    150   SHSTDAPI_(UINT) ExtractIconExA (LPCSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
    151   SHSTDAPI_(UINT) ExtractIconExW (LPCWSTR lpszFile, int nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons);
    152 
    153 #define DoEnvironmentSubst __MINGW_NAME_AW(DoEnvironmentSubst)
    154 #define ExtractIconEx __MINGW_NAME_AW(ExtractIconEx)
    155 
    156 #define EIRESID(x) (-1 * (int)(x))
    157 
    158 #define FO_MOVE 0x1
    159 #define FO_COPY 0x2
    160 #define FO_DELETE 0x3
    161 #define FO_RENAME 0x4
    162 
    163 #define FOF_MULTIDESTFILES 0x1
    164 #define FOF_CONFIRMMOUSE 0x2
    165 #define FOF_SILENT 0x4
    166 #define FOF_RENAMEONCOLLISION 0x8
    167 #define FOF_NOCONFIRMATION 0x10
    168 #define FOF_WANTMAPPINGHANDLE 0x20
    169 #define FOF_ALLOWUNDO 0x40
    170 #define FOF_FILESONLY 0x80
    171 #define FOF_SIMPLEPROGRESS 0x100
    172 #define FOF_NOCONFIRMMKDIR 0x200
    173 #define FOF_NOERRORUI 0x400
    174 #define FOF_NOCOPYSECURITYATTRIBS 0x800
    175 #define FOF_NORECURSION 0x1000
    176 #define FOF_NO_CONNECTED_ELEMENTS 0x2000
    177 #define FOF_WANTNUKEWARNING 0x4000
    178 #define FOF_NORECURSEREPARSE 0x8000
    179 
    180 #define FOF_NO_UI (FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR)
    181 
    182   typedef WORD FILEOP_FLAGS;
    183 
    184 #define PO_DELETE 0x0013
    185 #define PO_RENAME 0x0014
    186 #define PO_PORTCHANGE 0x0020
    187 
    188 #define PO_REN_PORT 0x0034
    189 
    190   typedef WORD PRINTEROP_FLAGS;
    191 
    192   typedef struct _SHFILEOPSTRUCTA {
    193     HWND hwnd;
    194     UINT wFunc;
    195     LPCSTR pFrom;
    196     LPCSTR pTo;
    197     FILEOP_FLAGS fFlags;
    198     WINBOOL fAnyOperationsAborted;
    199     LPVOID hNameMappings;
    200     PCSTR lpszProgressTitle;
    201   } SHFILEOPSTRUCTA,*LPSHFILEOPSTRUCTA;
    202 
    203   typedef struct _SHFILEOPSTRUCTW {
    204     HWND hwnd;
    205     UINT wFunc;
    206     LPCWSTR pFrom;
    207     LPCWSTR pTo;
    208     FILEOP_FLAGS fFlags;
    209     WINBOOL fAnyOperationsAborted;
    210     LPVOID hNameMappings;
    211     PCWSTR lpszProgressTitle;
    212   } SHFILEOPSTRUCTW,*LPSHFILEOPSTRUCTW;
    213 
    214   __MINGW_TYPEDEF_AW(SHFILEOPSTRUCT)
    215   __MINGW_TYPEDEF_AW(LPSHFILEOPSTRUCT)
    216 
    217   SHSTDAPI_(int) SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp);
    218   SHSTDAPI_(int) SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp);
    219 
    220 #define SHFileOperation __MINGW_NAME_AW(SHFileOperation)
    221 
    222   SHSTDAPI_(void) SHFreeNameMappings (HANDLE hNameMappings);
    223 
    224   typedef struct _SHNAMEMAPPINGA {
    225     LPSTR pszOldPath;
    226     LPSTR pszNewPath;
    227     int cchOldPath;
    228     int cchNewPath;
    229   } SHNAMEMAPPINGA,*LPSHNAMEMAPPINGA;
    230 
    231   typedef struct _SHNAMEMAPPINGW {
    232     LPWSTR pszOldPath;
    233     LPWSTR pszNewPath;
    234     int cchOldPath;
    235     int cchNewPath;
    236   } SHNAMEMAPPINGW,*LPSHNAMEMAPPINGW;
    237 
    238 
    239   __MINGW_TYPEDEF_AW(SHNAMEMAPPING)
    240   __MINGW_TYPEDEF_AW(LPSHNAMEMAPPING)
    241 
    242 #define SE_ERR_FNF 2
    243 #define SE_ERR_PNF 3
    244 #define SE_ERR_ACCESSDENIED 5
    245 #define SE_ERR_OOM 8
    246 #define SE_ERR_DLLNOTFOUND 32
    247 
    248 #define SE_ERR_SHARE 26
    249 #define SE_ERR_ASSOCINCOMPLETE 27
    250 #define SE_ERR_DDETIMEOUT 28
    251 #define SE_ERR_DDEFAIL 29
    252 #define SE_ERR_DDEBUSY 30
    253 #define SE_ERR_NOASSOC 31
    254 
    255 #define SEE_MASK_DEFAULT 0x0
    256 #define SEE_MASK_CLASSNAME 0x1
    257 #define SEE_MASK_CLASSKEY 0x3
    258 
    259 #define SEE_MASK_IDLIST 0x4
    260 #define SEE_MASK_INVOKEIDLIST 0xc
    261 #if NTDDI_VERSION < 0x06000000
    262 #define SEE_MASK_ICON 0x10
    263 #endif
    264 #define SEE_MASK_HOTKEY 0x20
    265 #define SEE_MASK_NOCLOSEPROCESS 0x40
    266 #define SEE_MASK_CONNECTNETDRV 0x80
    267 #define SEE_MASK_NOASYNC 0x100
    268 #define SEE_MASK_FLAG_DDEWAIT SEE_MASK_NOASYNC
    269 #define SEE_MASK_DOENVSUBST 0x200
    270 #define SEE_MASK_FLAG_NO_UI 0x400
    271 #define SEE_MASK_UNICODE 0x4000
    272 #define SEE_MASK_NO_CONSOLE 0x8000
    273 #define SEE_MASK_ASYNCOK 0x100000
    274 #define SEE_MASK_HMONITOR 0x200000
    275 #define SEE_MASK_NOZONECHECKS 0x800000
    276 #define SEE_MASK_NOQUERYCLASSSTORE 0x1000000
    277 #define SEE_MASK_WAITFORINPUTIDLE 0x2000000
    278 #define SEE_MASK_FLAG_LOG_USAGE 0x4000000
    279 #if NTDDI_VERSION >= 0x06020000
    280 #define SEE_MASK_FLAG_HINST_IS_SITE 0x8000000
    281 #endif
    282 
    283 #ifndef DUMMYUNIONNAME
    284 #ifdef NONAMELESSUNION
    285 #define DUMMYUNIONNAME u
    286 #define DUMMYUNIONNAME2 u2
    287 #define DUMMYUNIONNAME3 u3
    288 #define DUMMYUNIONNAME4 u4
    289 #define DUMMYUNIONNAME5 u5
    290 #else
    291 #define DUMMYUNIONNAME
    292 #define DUMMYUNIONNAME2
    293 #define DUMMYUNIONNAME3
    294 #define DUMMYUNIONNAME4
    295 #define DUMMYUNIONNAME5
    296 #endif
    297 #endif
    298 
    299 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    300 
    301   typedef struct _SHELLEXECUTEINFOA {
    302     DWORD cbSize;
    303     ULONG fMask;
    304     HWND hwnd;
    305     LPCSTR lpVerb;
    306     LPCSTR lpFile;
    307     LPCSTR lpParameters;
    308     LPCSTR lpDirectory;
    309     int nShow;
    310     HINSTANCE hInstApp;
    311     void *lpIDList;
    312     LPCSTR lpClass;
    313     HKEY hkeyClass;
    314     DWORD dwHotKey;
    315     __C89_NAMELESS union {
    316       HANDLE hIcon;
    317       HANDLE hMonitor;
    318     } DUMMYUNIONNAME;
    319     HANDLE hProcess;
    320   } SHELLEXECUTEINFOA,*LPSHELLEXECUTEINFOA;
    321 
    322   typedef struct _SHELLEXECUTEINFOW {
    323     DWORD cbSize;
    324     ULONG fMask;
    325     HWND hwnd;
    326     LPCWSTR lpVerb;
    327     LPCWSTR lpFile;
    328     LPCWSTR lpParameters;
    329     LPCWSTR lpDirectory;
    330     int nShow;
    331     HINSTANCE hInstApp;
    332     void *lpIDList;
    333     LPCWSTR lpClass;
    334     HKEY hkeyClass;
    335     DWORD dwHotKey;
    336     __C89_NAMELESS union {
    337       HANDLE hIcon;
    338       HANDLE hMonitor;
    339     } DUMMYUNIONNAME;
    340     HANDLE hProcess;
    341   } SHELLEXECUTEINFOW,*LPSHELLEXECUTEINFOW;
    342 
    343   __MINGW_TYPEDEF_AW(SHELLEXECUTEINFO)
    344   __MINGW_TYPEDEF_AW(LPSHELLEXECUTEINFO)
    345 
    346   SHSTDAPI_(WINBOOL) ShellExecuteExA (SHELLEXECUTEINFOA *pExecInfo);
    347   SHSTDAPI_(WINBOOL) ShellExecuteExW (SHELLEXECUTEINFOW *pExecInfo);
    348 
    349 #define ShellExecuteEx __MINGW_NAME_AW(ShellExecuteEx)
    350 
    351   typedef struct _SHCREATEPROCESSINFOW {
    352     DWORD cbSize;
    353     ULONG fMask;
    354     HWND hwnd;
    355     LPCWSTR pszFile;
    356     LPCWSTR pszParameters;
    357     LPCWSTR pszCurrentDirectory;
    358     HANDLE hUserToken;
    359     LPSECURITY_ATTRIBUTES lpProcessAttributes;
    360     LPSECURITY_ATTRIBUTES lpThreadAttributes;
    361     WINBOOL bInheritHandles;
    362     DWORD dwCreationFlags;
    363     LPSTARTUPINFOW lpStartupInfo;
    364     LPPROCESS_INFORMATION lpProcessInformation;
    365   } SHCREATEPROCESSINFOW,*PSHCREATEPROCESSINFOW;
    366 
    367   SHSTDAPI_(WINBOOL) SHCreateProcessAsUserW (PSHCREATEPROCESSINFOW pscpi);
    368 
    369 #if NTDDI_VERSION >= 0x06000000
    370   SHSTDAPI SHEvaluateSystemCommandTemplate (PCWSTR pszCmdTemplate, PWSTR *ppszApplication, PWSTR *ppszCommandLine, PWSTR *ppszParameters);
    371 
    372   typedef enum ASSOCCLASS {
    373     ASSOCCLASS_SHELL_KEY = 0,
    374     ASSOCCLASS_PROGID_KEY,
    375     ASSOCCLASS_PROGID_STR,
    376     ASSOCCLASS_CLSID_KEY,
    377     ASSOCCLASS_CLSID_STR,
    378     ASSOCCLASS_APP_KEY,
    379     ASSOCCLASS_APP_STR,
    380     ASSOCCLASS_SYSTEM_STR,
    381     ASSOCCLASS_FOLDER,
    382     ASSOCCLASS_STAR,
    383 #if NTDDI_VERSION >= 0x06020000
    384     ASSOCCLASS_FIXED_PROGID_STR,
    385     ASSOCCLASS_PROTOCOL_STR,
    386 #endif
    387   } ASSOCCLASS;
    388 
    389   typedef struct ASSOCIATIONELEMENT {
    390     ASSOCCLASS ac;
    391     HKEY hkClass;
    392     PCWSTR pszClass;
    393   } ASSOCIATIONELEMENT;
    394 
    395   SHSTDAPI AssocCreateForClasses (const ASSOCIATIONELEMENT *rgClasses, ULONG cClasses, REFIID riid, void **ppv);
    396 #endif
    397 
    398   typedef struct _SHQUERYRBINFO {
    399     DWORD cbSize;
    400     __MINGW_EXTENSION __int64 i64Size;
    401     __MINGW_EXTENSION __int64 i64NumItems;
    402   } SHQUERYRBINFO,*LPSHQUERYRBINFO;
    403 
    404 #define SHERB_NOCONFIRMATION 0x00000001
    405 #define SHERB_NOPROGRESSUI 0x00000002
    406 #define SHERB_NOSOUND 0x00000004
    407 
    408   SHSTDAPI SHQueryRecycleBinA (LPCSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
    409   SHSTDAPI SHQueryRecycleBinW (LPCWSTR pszRootPath, LPSHQUERYRBINFO pSHQueryRBInfo);
    410 
    411 #define SHQueryRecycleBin __MINGW_NAME_AW(SHQueryRecycleBin)
    412 
    413   SHSTDAPI SHEmptyRecycleBinA (HWND hwnd, LPCSTR pszRootPath, DWORD dwFlags);
    414   SHSTDAPI SHEmptyRecycleBinW (HWND hwnd, LPCWSTR pszRootPath, DWORD dwFlags);
    415 
    416 #define SHEmptyRecycleBin __MINGW_NAME_AW(SHEmptyRecycleBin)
    417 
    418 #if NTDDI_VERSION >= 0x06000000
    419   typedef enum {
    420     QUNS_NOT_PRESENT = 1,
    421     QUNS_BUSY = 2,
    422     QUNS_RUNNING_D3D_FULL_SCREEN = 3,
    423     QUNS_PRESENTATION_MODE = 4,
    424     QUNS_ACCEPTS_NOTIFICATIONS = 5
    425 #if NTDDI_VERSION >= 0x06010000
    426     , QUNS_QUIET_TIME = 6
    427 #endif
    428 #if NTDDI_VERSION >= 0x06020000
    429     , QUNS_APP = 7
    430 #endif
    431   } QUERY_USER_NOTIFICATION_STATE;
    432 
    433   SHSTDAPI SHQueryUserNotificationState (QUERY_USER_NOTIFICATION_STATE *pquns);
    434 #endif
    435 
    436 #if NTDDI_VERSION >= 0x06010000
    437   SHSTDAPI SHGetPropertyStoreForWindow (HWND hwnd, REFIID riid, void **ppv);
    438 #endif
    439 
    440 #endif /* WINAPI_PARTITION_DESKTOP.  */
    441 
    442   typedef struct _NOTIFYICONDATAA {
    443     DWORD cbSize;
    444     HWND hWnd;
    445     UINT uID;
    446     UINT uFlags;
    447     UINT uCallbackMessage;
    448     HICON hIcon;
    449     CHAR szTip[128];
    450     DWORD dwState;
    451     DWORD dwStateMask;
    452     CHAR szInfo[256];
    453     __C89_NAMELESS union {
    454       UINT uTimeout;
    455       UINT uVersion;
    456     } DUMMYUNIONNAME;
    457     CHAR szInfoTitle[64];
    458     DWORD dwInfoFlags;
    459     GUID guidItem;
    460 #if NTDDI_VERSION >= 0x06000000
    461     HICON hBalloonIcon;
    462 #endif
    463   } NOTIFYICONDATAA,*PNOTIFYICONDATAA;
    464 
    465   typedef struct _NOTIFYICONDATAW {
    466     DWORD cbSize;
    467     HWND hWnd;
    468     UINT uID;
    469     UINT uFlags;
    470     UINT uCallbackMessage;
    471     HICON hIcon;
    472     WCHAR szTip[128];
    473     DWORD dwState;
    474     DWORD dwStateMask;
    475     WCHAR szInfo[256];
    476     __C89_NAMELESS union {
    477       UINT uTimeout;
    478       UINT uVersion;
    479     } DUMMYUNIONNAME;
    480     WCHAR szInfoTitle[64];
    481     DWORD dwInfoFlags;
    482     GUID guidItem;
    483 #if NTDDI_VERSION >= 0x06000000
    484     HICON hBalloonIcon;
    485 #endif
    486   } NOTIFYICONDATAW,*PNOTIFYICONDATAW;
    487 
    488   __MINGW_TYPEDEF_AW(NOTIFYICONDATA)
    489   __MINGW_TYPEDEF_AW(PNOTIFYICONDATA)
    490 
    491 #define NOTIFYICONDATAA_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAA, szTip[64])
    492 #define NOTIFYICONDATAW_V1_SIZE FIELD_OFFSET (NOTIFYICONDATAW, szTip[64])
    493 #define NOTIFYICONDATAA_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAA, guidItem)
    494 #define NOTIFYICONDATAW_V2_SIZE FIELD_OFFSET (NOTIFYICONDATAW, guidItem)
    495 #define NOTIFYICONDATAA_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAA, hBalloonIcon)
    496 #define NOTIFYICONDATAW_V3_SIZE FIELD_OFFSET (NOTIFYICONDATAW, hBalloonIcon)
    497 
    498 #define NOTIFYICONDATA_V1_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V1_SIZE)
    499 #define NOTIFYICONDATA_V2_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V2_SIZE)
    500 #define NOTIFYICONDATA_V3_SIZE __MINGW_NAME_AW_EXT(NOTIFYICONDATA,_V3_SIZE)
    501 
    502 #define NIN_SELECT (WM_USER + 0)
    503 #define NINF_KEY 0x1
    504 #define NIN_KEYSELECT (NIN_SELECT | NINF_KEY)
    505 
    506 #define NIN_BALLOONSHOW (WM_USER + 2)
    507 #define NIN_BALLOONHIDE (WM_USER + 3)
    508 #define NIN_BALLOONTIMEOUT (WM_USER + 4)
    509 #define NIN_BALLOONUSERCLICK (WM_USER + 5)
    510 #if NTDDI_VERSION >= 0x06000000
    511 #define NIN_POPUPOPEN (WM_USER + 6)
    512 #define NIN_POPUPCLOSE (WM_USER + 7)
    513 #endif
    514 
    515 #define NIM_ADD 0x00000000
    516 #define NIM_MODIFY 0x00000001
    517 #define NIM_DELETE 0x00000002
    518 #define NIM_SETFOCUS 0x00000003
    519 #define NIM_SETVERSION 0x00000004
    520 
    521 #define NOTIFYICON_VERSION 3
    522 #if NTDDI_VERSION >= 0x06000000
    523 #define NOTIFYICON_VERSION_4 4
    524 #endif
    525 
    526 #define NIF_MESSAGE 0x00000001
    527 #define NIF_ICON 0x00000002
    528 #define NIF_TIP 0x00000004
    529 #define NIF_STATE 0x00000008
    530 #define NIF_INFO 0x00000010
    531 #if _WIN32_IE >= 0x600
    532 #define NIF_GUID 0x00000020
    533 #endif
    534 #if NTDDI_VERSION >= 0x06000000
    535 #define NIF_REALTIME 0x00000040
    536 #define NIF_SHOWTIP 0x00000080
    537 #endif
    538 
    539 #define NIS_HIDDEN 0x00000001
    540 #define NIS_SHAREDICON 0x00000002
    541 
    542 #define NIIF_NONE 0x00000000
    543 #define NIIF_INFO 0x00000001
    544 #define NIIF_WARNING 0x00000002
    545 #define NIIF_ERROR 0x00000003
    546 #define NIIF_USER 0x00000004
    547 #define NIIF_ICON_MASK 0x0000000f
    548 #define NIIF_NOSOUND 0x00000010
    549 #if NTDDI_VERSION >= 0x06000000
    550 #define NIIF_LARGE_ICON 0x00000020
    551 #endif
    552 #if NTDDI_VERSION >= 0x06010000
    553 #define NIIF_RESPECT_QUIET_TIME 0x00000080
    554 #endif
    555 
    556   typedef struct _NOTIFYICONIDENTIFIER {
    557     DWORD cbSize;
    558     HWND hWnd;
    559     UINT uID;
    560     GUID guidItem;
    561   } NOTIFYICONIDENTIFIER,*PNOTIFYICONIDENTIFIER;
    562 
    563   SHSTDAPI_(WINBOOL) Shell_NotifyIconA (DWORD dwMessage, PNOTIFYICONDATAA lpData);
    564   SHSTDAPI_(WINBOOL) Shell_NotifyIconW (DWORD dwMessage, PNOTIFYICONDATAW lpData);
    565 
    566 #define Shell_NotifyIcon __MINGW_NAME_AW(Shell_NotifyIcon)
    567 
    568 #if NTDDI_VERSION >= 0x06010000
    569   SHSTDAPI Shell_NotifyIconGetRect (const NOTIFYICONIDENTIFIER *identifier, RECT *iconLocation);
    570 #endif
    571 
    572 #ifndef SHFILEINFO_DEFINED
    573 #define SHFILEINFO_DEFINED
    574 
    575   typedef struct _SHFILEINFOA {
    576     HICON hIcon;
    577     int iIcon;
    578     DWORD dwAttributes;
    579     CHAR szDisplayName[MAX_PATH];
    580     CHAR szTypeName[80];
    581   } SHFILEINFOA;
    582 
    583   typedef struct _SHFILEINFOW {
    584     HICON hIcon;
    585     int iIcon;
    586     DWORD dwAttributes;
    587     WCHAR szDisplayName[MAX_PATH];
    588     WCHAR szTypeName[80];
    589   } SHFILEINFOW;
    590 
    591   __MINGW_TYPEDEF_AW(SHFILEINFO)
    592 #endif
    593 
    594 #define SHGFI_ICON 0x000000100
    595 #define SHGFI_DISPLAYNAME 0x000000200
    596 #define SHGFI_TYPENAME 0x000000400
    597 #define SHGFI_ATTRIBUTES 0x000000800
    598 #define SHGFI_ICONLOCATION 0x000001000
    599 #define SHGFI_EXETYPE 0x000002000
    600 #define SHGFI_SYSICONINDEX 0x000004000
    601 #define SHGFI_LINKOVERLAY 0x000008000
    602 #define SHGFI_SELECTED 0x000010000
    603 #define SHGFI_ATTR_SPECIFIED 0x000020000
    604 
    605 #define SHGFI_LARGEICON 0x000000000
    606 #define SHGFI_SMALLICON 0x000000001
    607 #define SHGFI_OPENICON 0x000000002
    608 #define SHGFI_SHELLICONSIZE 0x000000004
    609 #define SHGFI_PIDL 0x000000008
    610 #define SHGFI_USEFILEATTRIBUTES 0x000000010
    611 
    612 #define SHGFI_ADDOVERLAYS 0x000000020
    613 #define SHGFI_OVERLAYINDEX 0x000000040
    614 
    615   SHSTDAPI_(DWORD_PTR) SHGetFileInfoA (LPCSTR pszPath, DWORD dwFileAttributes, SHFILEINFOA *psfi, UINT cbFileInfo, UINT uFlags);
    616   SHSTDAPI_(DWORD_PTR) SHGetFileInfoW (LPCWSTR pszPath, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT cbFileInfo, UINT uFlags);
    617 
    618 #define SHGetFileInfo __MINGW_NAME_AW(SHGetFileInfo)
    619 
    620 #if NTDDI_VERSION >= 0x06000000
    621   typedef struct _SHSTOCKICONINFO {
    622     DWORD cbSize;
    623     HICON hIcon;
    624     int iSysImageIndex;
    625     int iIcon;
    626     WCHAR szPath[MAX_PATH];
    627   } SHSTOCKICONINFO;
    628 
    629 #define SHGSI_ICONLOCATION 0
    630 #define SHGSI_ICON SHGFI_ICON
    631 #define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX
    632 #define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY
    633 #define SHGSI_SELECTED SHGFI_SELECTED
    634 #define SHGSI_LARGEICON SHGFI_LARGEICON
    635 #define SHGSI_SMALLICON SHGFI_SMALLICON
    636 #define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE
    637 
    638   typedef enum SHSTOCKICONID {
    639     SIID_DOCNOASSOC = 0,
    640     SIID_DOCASSOC = 1,
    641     SIID_APPLICATION = 2,
    642     SIID_FOLDER = 3,
    643     SIID_FOLDEROPEN = 4,
    644     SIID_DRIVE525 = 5,
    645     SIID_DRIVE35 = 6,
    646     SIID_DRIVEREMOVE = 7,
    647     SIID_DRIVEFIXED = 8,
    648     SIID_DRIVENET = 9,
    649     SIID_DRIVENETDISABLED = 10,
    650     SIID_DRIVECD = 11,
    651     SIID_DRIVERAM = 12,
    652     SIID_WORLD = 13,
    653     SIID_SERVER = 15,
    654     SIID_PRINTER = 16,
    655     SIID_MYNETWORK = 17,
    656     SIID_FIND = 22,
    657     SIID_HELP = 23,
    658     SIID_SHARE = 28,
    659     SIID_LINK = 29,
    660     SIID_SLOWFILE = 30,
    661     SIID_RECYCLER = 31,
    662     SIID_RECYCLERFULL = 32,
    663     SIID_MEDIACDAUDIO = 40,
    664     SIID_LOCK = 47,
    665     SIID_AUTOLIST = 49,
    666     SIID_PRINTERNET = 50,
    667     SIID_SERVERSHARE = 51,
    668     SIID_PRINTERFAX = 52,
    669     SIID_PRINTERFAXNET = 53,
    670     SIID_PRINTERFILE = 54,
    671     SIID_STACK = 55,
    672     SIID_MEDIASVCD = 56,
    673     SIID_STUFFEDFOLDER = 57,
    674     SIID_DRIVEUNKNOWN = 58,
    675     SIID_DRIVEDVD = 59,
    676     SIID_MEDIADVD = 60,
    677     SIID_MEDIADVDRAM = 61,
    678     SIID_MEDIADVDRW = 62,
    679     SIID_MEDIADVDR = 63,
    680     SIID_MEDIADVDROM = 64,
    681     SIID_MEDIACDAUDIOPLUS = 65,
    682     SIID_MEDIACDRW = 66,
    683     SIID_MEDIACDR = 67,
    684     SIID_MEDIACDBURN = 68,
    685     SIID_MEDIABLANKCD = 69,
    686     SIID_MEDIACDROM = 70,
    687     SIID_AUDIOFILES = 71,
    688     SIID_IMAGEFILES = 72,
    689     SIID_VIDEOFILES = 73,
    690     SIID_MIXEDFILES = 74,
    691     SIID_FOLDERBACK = 75,
    692     SIID_FOLDERFRONT = 76,
    693     SIID_SHIELD = 77,
    694     SIID_WARNING = 78,
    695     SIID_INFO = 79,
    696     SIID_ERROR = 80,
    697     SIID_KEY = 81,
    698     SIID_SOFTWARE = 82,
    699     SIID_RENAME = 83,
    700     SIID_DELETE = 84,
    701     SIID_MEDIAAUDIODVD = 85,
    702     SIID_MEDIAMOVIEDVD = 86,
    703     SIID_MEDIAENHANCEDCD = 87,
    704     SIID_MEDIAENHANCEDDVD = 88,
    705     SIID_MEDIAHDDVD = 89,
    706     SIID_MEDIABLURAY = 90,
    707     SIID_MEDIAVCD = 91,
    708     SIID_MEDIADVDPLUSR = 92,
    709     SIID_MEDIADVDPLUSRW = 93,
    710     SIID_DESKTOPPC = 94,
    711     SIID_MOBILEPC = 95,
    712     SIID_USERS = 96,
    713     SIID_MEDIASMARTMEDIA = 97,
    714     SIID_MEDIACOMPACTFLASH = 98,
    715     SIID_DEVICECELLPHONE = 99,
    716     SIID_DEVICECAMERA = 100,
    717     SIID_DEVICEVIDEOCAMERA = 101,
    718     SIID_DEVICEAUDIOPLAYER = 102,
    719     SIID_NETWORKCONNECT = 103,
    720     SIID_INTERNET = 104,
    721     SIID_ZIPFILE = 105,
    722     SIID_SETTINGS = 106,
    723 
    724     SIID_DRIVEHDDVD = 132,
    725     SIID_DRIVEBD = 133,
    726     SIID_MEDIAHDDVDROM = 134,
    727     SIID_MEDIAHDDVDR = 135,
    728     SIID_MEDIAHDDVDRAM = 136,
    729     SIID_MEDIABDROM = 137,
    730     SIID_MEDIABDR = 138,
    731     SIID_MEDIABDRE = 139,
    732     SIID_CLUSTEREDDRIVE = 140,
    733 
    734     SIID_MAX_ICONS = 175
    735   } SHSTOCKICONID;
    736 
    737 #define SIID_INVALID ((SHSTOCKICONID)-1)
    738 
    739   SHSTDAPI SHGetStockIconInfo (SHSTOCKICONID siid, UINT uFlags, SHSTOCKICONINFO *psii);
    740 #endif
    741 
    742 #define SHGetDiskFreeSpace SHGetDiskFreeSpaceEx
    743 
    744   SHSTDAPI_(WINBOOL) SHGetDiskFreeSpaceExA (LPCSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes);
    745   SHSTDAPI_(WINBOOL) SHGetDiskFreeSpaceExW (LPCWSTR pszDirectoryName, ULARGE_INTEGER *pulFreeBytesAvailableToCaller, ULARGE_INTEGER *pulTotalNumberOfBytes, ULARGE_INTEGER *pulTotalNumberOfFreeBytes);
    746   SHSTDAPI_(WINBOOL) SHGetNewLinkInfoA (LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, WINBOOL *pfMustCopy, UINT uFlags);
    747   SHSTDAPI_(WINBOOL) SHGetNewLinkInfoW (LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, WINBOOL *pfMustCopy, UINT uFlags);
    748 
    749 #define SHGetDiskFreeSpaceEx __MINGW_NAME_AW(SHGetDiskFreeSpaceEx)
    750 #define SHGetNewLinkInfo __MINGW_NAME_AW(SHGetNewLinkInfo)
    751 
    752 #define SHGNLI_PIDL 0x000000001
    753 #define SHGNLI_PREFIXNAME 0x000000002
    754 #define SHGNLI_NOUNIQUE 0x000000004
    755 #define SHGNLI_NOLNK 0x000000008
    756 #if _WIN32_IE >= 0x0600
    757 #define SHGNLI_NOLOCNAME 0x000000010
    758 #endif
    759 #if NTDDI_VERSION >= 0x06010000
    760 #define SHGNLI_USEURLEXT 0x000000020
    761 #endif
    762 
    763 #define PRINTACTION_OPEN 0
    764 #define PRINTACTION_PROPERTIES 1
    765 #define PRINTACTION_NETINSTALL 2
    766 #define PRINTACTION_NETINSTALLLINK 3
    767 #define PRINTACTION_TESTPAGE 4
    768 #define PRINTACTION_OPENNETPRN 5
    769 #define PRINTACTION_DOCUMENTDEFAULTS 6
    770 #define PRINTACTION_SERVERPROPERTIES 7
    771 
    772   SHSTDAPI_(WINBOOL) SHInvokePrinterCommandA (HWND hwnd, UINT uAction, LPCSTR lpBuf1, LPCSTR lpBuf2, WINBOOL fModal);
    773   SHSTDAPI_(WINBOOL) SHInvokePrinterCommandW (HWND hwnd, UINT uAction, LPCWSTR lpBuf1, LPCWSTR lpBuf2, WINBOOL fModal);
    774 
    775 #define SHInvokePrinterCommand __MINGW_NAME_AW(SHInvokePrinterCommand)
    776 
    777 #if NTDDI_VERSION >= 0x06000000
    778   typedef struct _OPEN_PRINTER_PROPS_INFOA {
    779     DWORD dwSize;
    780     LPSTR pszSheetName;
    781     UINT uSheetIndex;
    782     DWORD dwFlags;
    783     WINBOOL bModal;
    784   } OPEN_PRINTER_PROPS_INFOA,*POPEN_PRINTER_PROPS_INFOA;
    785 
    786   typedef struct _OPEN_PRINTER_PROPS_INFOW {
    787     DWORD dwSize;
    788     LPWSTR pszSheetName;
    789     UINT uSheetIndex;
    790     DWORD dwFlags;
    791     WINBOOL bModal;
    792   } OPEN_PRINTER_PROPS_INFOW,*POPEN_PRINTER_PROPS_INFOW;
    793 
    794   __MINGW_TYPEDEF_AW(OPEN_PRINTER_PROPS_INFO)
    795   __MINGW_TYPEDEF_AW(POPEN_PRINTER_PROPS_INFO)
    796 #define PRINT_PROP_FORCE_NAME 0x01
    797 #endif
    798 
    799   SHSTDAPI SHLoadNonloadedIconOverlayIdentifiers (void);
    800   SHSTDAPI SHIsFileAvailableOffline (PCWSTR pwszPath, DWORD *pdwStatus);
    801 
    802 #define OFFLINE_STATUS_LOCAL 0x0001
    803 #define OFFLINE_STATUS_REMOTE 0x0002
    804 #define OFFLINE_STATUS_INCOMPLETE 0x0004
    805 
    806   SHSTDAPI SHSetLocalizedName (PCWSTR pszPath, PCWSTR pszResModule, int idsRes);
    807 
    808 #if NTDDI_VERSION >= 0x06000000
    809   SHSTDAPI SHRemoveLocalizedName (PCWSTR pszPath);
    810   SHSTDAPI SHGetLocalizedName (PCWSTR pszPath, PWSTR pszResModule, UINT cch, int *pidsRes);
    811 #endif
    812 
    813 #ifndef _SHLWAPI_
    814 #define LWSTDAPIV_(type) EXTERN_C DECLSPEC_IMPORT type STDAPIVCALLTYPE
    815 #else
    816 #define LWSTDAPIV_(type) STDAPIV_ (type)
    817 #endif
    818 
    819   LWSTDAPIV_ (int) ShellMessageBoxA (HINSTANCE hAppInst, HWND hWnd, LPCSTR lpcText, LPCSTR lpcTitle, UINT fuStyle,...);
    820   LWSTDAPIV_ (int) ShellMessageBoxW (HINSTANCE hAppInst, HWND hWnd, LPCWSTR lpcText, LPCWSTR lpcTitle, UINT fuStyle,...);
    821 
    822 #define ShellMessageBox __MINGW_NAME_AW(ShellMessageBox)
    823 
    824   SHSTDAPI_(WINBOOL) IsLFNDriveA (LPCSTR pszPath);
    825   SHSTDAPI_(WINBOOL) IsLFNDriveW (LPCWSTR pszPath);
    826 
    827 #define IsLFNDrive __MINGW_NAME_AW(IsLFNDrive)
    828 
    829 #if _WIN32_IE >= 0x0600
    830   STDAPI SHEnumerateUnreadMailAccountsA (HKEY hKeyUser, DWORD dwIndex, LPSTR pszMailAddress, int cchMailAddress);
    831   STDAPI SHEnumerateUnreadMailAccountsW (HKEY hKeyUser, DWORD dwIndex, LPWSTR pszMailAddress, int cchMailAddress);
    832   STDAPI SHGetUnreadMailCountA (HKEY hKeyUser, LPCSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPSTR pszShellExecuteCommand, int cchShellExecuteCommand);
    833   STDAPI SHGetUnreadMailCountW (HKEY hKeyUser, LPCWSTR pszMailAddress, DWORD *pdwCount, FILETIME *pFileTime, LPWSTR pszShellExecuteCommand, int cchShellExecuteCommand);
    834   STDAPI SHSetUnreadMailCountA (LPCSTR pszMailAddress, DWORD dwCount, LPCSTR pszShellExecuteCommand);
    835   STDAPI SHSetUnreadMailCountW (LPCWSTR pszMailAddress, DWORD dwCount, LPCWSTR pszShellExecuteCommand);
    836 
    837 #define SHEnumerateUnreadMailAccounts __MINGW_NAME_AW(SHEnumerateUnreadMailAccounts)
    838 #define SHGetUnreadMailCount __MINGW_NAME_AW(SHGetUnreadMailCount)
    839 #define SHSetUnreadMailCount __MINGW_NAME_AW(SHSetUnreadMailCount)
    840 
    841 #endif
    842 #if _WIN32_IE >= 0x0601
    843   STDAPI_ (WINBOOL) SHTestTokenMembership (HANDLE hToken, ULONG ulRID);
    844 #endif
    845 
    846 #if _WIN32_IE >= 0x0600
    847   SHSTDAPI SHGetImageList (int iImageList, REFIID riid, void **ppvObj);
    848 
    849 #define SHIL_LARGE 0
    850 #define SHIL_SMALL 1
    851 #define SHIL_EXTRALARGE 2
    852 #define SHIL_SYSSMALL 3
    853 #if NTDDI_VERSION >= 0x06000000
    854 #define SHIL_JUMBO 4
    855 #define SHIL_LAST SHIL_JUMBO
    856 #else
    857 #define SHIL_LAST SHIL_SYSSMALL
    858 #endif
    859 
    860   typedef HRESULT (STDMETHODCALLTYPE *PFNCANSHAREFOLDERW) (PCWSTR pszPath);
    861   typedef HRESULT (STDMETHODCALLTYPE *PFNSHOWSHAREFOLDERUIW) (HWND hwndParent, PCWSTR pszPath);
    862 
    863 #endif
    864 #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
    865 
    866 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
    867   SHSTDAPI_(LPWSTR *) CommandLineToArgvW (LPCWSTR lpCmdLine, int *pNumArgs);
    868 #endif
    869 
    870 #ifdef __cplusplus
    871 }
    872 #endif
    873 
    874 #ifndef _WIN64
    875 #include <poppack.h>
    876 #endif
    877 
    878 #if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
    879 #if NTDDI_VERSION >= 0x06000000
    880 
    881 #define WC_NETADDRESS L"msctls_netaddress"
    882 
    883 SHSTDAPI_(WINBOOL) InitNetworkAddressControl (void);
    884 
    885 #define NCM_GETADDRESS (WM_USER+1)
    886 #define NetAddr_GetAddress(hwnd, pv) (HRESULT)SNDMSG (hwnd, NCM_GETADDRESS, 0,(LPARAM)pv)
    887 
    888 typedef struct tagNC_ADDRESS {
    889   struct NET_ADDRESS_INFO_ *pAddrInfo;
    890   USHORT PortNumber;
    891   BYTE PrefixLength;
    892 } NC_ADDRESS,*PNC_ADDRESS;
    893 
    894 #define NCM_SETALLOWTYPE (WM_USER+2)
    895 #define NetAddr_SetAllowType(hwnd, addrMask) (HRESULT)SNDMSG (hwnd, NCM_SETALLOWTYPE,(WPARAM)addrMask, 0)
    896 
    897 #define NCM_GETALLOWTYPE (WM_USER+3)
    898 #define NetAddr_GetAllowType(hwnd) (DWORD)SNDMSG (hwnd, NCM_GETALLOWTYPE, 0, 0)
    899 
    900 #define NCM_DISPLAYERRORTIP (WM_USER+4)
    901 #define NetAddr_DisplayErrorTip(hwnd) (HRESULT)SNDMSG (hwnd, NCM_DISPLAYERRORTIP, 0, 0)
    902 #endif
    903 
    904 #if NTDDI_VERSION >= 0x06000000
    905 STDAPI SHGetDriveMedia (PCWSTR pszDrive, DWORD *pdwMediaContent);
    906 #endif
    907 #endif
    908 #endif