You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
5.9 KiB
212 lines
5.9 KiB
|
|
#ifndef __MDSPDEFS_H__
|
|
#define __MDSPDEFS_H__
|
|
|
|
#if _MSC_VER >= 1000
|
|
#pragma once
|
|
#endif // _MSC_VER >= 1000
|
|
|
|
#include "scserver.h"
|
|
|
|
#define MDSP_TEMP
|
|
#define ALSO_CHECK_FILES
|
|
|
|
typedef PVOID HDEVNOTIFY;
|
|
typedef HDEVNOTIFY *PHDEVNOTIFY;
|
|
#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
|
|
|
|
typedef struct {
|
|
BOOL bValid;
|
|
WCHAR wcsDevName[32];
|
|
LPVOID pDeviceObj;
|
|
LPVOID pIWMDMConnect;
|
|
} MDSPNOTIFYINFO;
|
|
|
|
typedef struct {
|
|
BOOL bValid;
|
|
WCHAR wcsDevName[32];
|
|
DWORD dwStatus;
|
|
LPVOID pIMDSPStorageGlobals;
|
|
} MDSPGLOBALDEVICEINFO;
|
|
|
|
|
|
#define WMDM_WAVE_FORMAT_ALL (WORD)0xFFFF
|
|
#define WCS_MIME_TYPE_ALL L"*/*"
|
|
|
|
#define MDSP_PMID_SOFT 0
|
|
#define MDSP_PMID_SANDISK 1
|
|
#define MDSP_MAX_DRIVE_COUNT 26
|
|
#define MDSP_MAX_DEVICE_OBJ 64
|
|
|
|
#define STR_MDSPREG "Software\\Microsoft\\Windows Media Device Manager\\Plugins\\SP\\MSPMSP"
|
|
#define STR_MDSPPROGID "MDServiceProvider.MDServiceProvider"
|
|
#define WCS_PMID_SOFT L"media.id"
|
|
|
|
|
|
extern DWORD DoRegisterDeviceInterface(HWND hWnd, GUID InterfaceClassGuid, HDEVNOTIFY *hDevNotify);
|
|
extern BOOL DoUnregisterDeviceInterface(HDEVNOTIFY hDev);
|
|
extern void MDSPProcessDeviceChange(WPARAM wParam, LPARAM lParam);
|
|
extern void MDSPNotifyDeviceConnection(WCHAR *wcsDeviceName, BOOL nIsConnect);
|
|
extern HRESULT wcsParseDeviceName(WCHAR *wcsIn, WCHAR *wcsOut, DWORD dwNumCharsInOutBuffer);
|
|
extern HRESULT GetFileSizeRecursiveA(char *szPath, DWORD *pdwSizeLow, DWORD *pdwSizeHigh);
|
|
extern HRESULT GetFileSizeRecursiveW(WCHAR *wcsPath, DWORD *pdwSizeLow, DWORD *pdwSizeHigh);
|
|
extern HRESULT DeleteFileRecursiveA(char *szPath);
|
|
extern HRESULT DeleteFileRecursiveW(WCHAR *wcsPath);
|
|
extern HRESULT SetGlobalDeviceStatus(WCHAR *wcsName, DWORD dwStat, BOOL bClear);
|
|
extern HRESULT GetGlobalDeviceStatus(WCHAR *wcsNameIn, DWORD *pdwStat);
|
|
extern BOOL IsIomegaDrive(LPSTR szDL);
|
|
extern UINT __stdcall UtilGetDriveType(LPSTR szDL);
|
|
extern BOOL IsWinNT();
|
|
extern BOOL UtilSetFileAttributesW(LPCWSTR lpFileName, DWORD dwFileAttributes);
|
|
extern DWORD UtilGetFileAttributesW(LPCWSTR lpFileName);
|
|
extern BOOL UtilCreateDirectoryW(LPCWSTR lpPathName, LPSECURITY_ATTRIBUTES lpSecurityAttributes);
|
|
extern HANDLE UtilCreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
|
extern BOOL UtilMoveFileW(LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName);
|
|
extern HRESULT QuerySubFoldersAndFiles(LPCWSTR szCurrentFolder, DWORD *pdwAttr);
|
|
|
|
extern DWORD g_dwStartDrive;
|
|
extern HINSTANCE g_hinstance;
|
|
extern MDSPNOTIFYINFO g_NotifyInfo[MDSP_MAX_DEVICE_OBJ];
|
|
extern MDSPGLOBALDEVICEINFO g_GlobalDeviceInfo[MDSP_MAX_DEVICE_OBJ];
|
|
extern WCHAR g_wcsBackslash[2];
|
|
#define BACKSLASH_STRING_LENGTH (ARRAYSIZE(g_wcsBackslash)-1)
|
|
extern CHAR g_szBackslash[2];
|
|
#define BACKSLASH_SZ_STRING_LENGTH (ARRAYSIZE(g_szBackslash)-1)
|
|
extern CComMultiThreadModel::AutoCriticalSection g_CriticalSection;
|
|
extern CSecureChannelServer *g_pAppSCServer;
|
|
extern BOOL g_bIsWinNT;
|
|
|
|
// The following are copied from drmerr.h
|
|
#define fFalse 0
|
|
#define fTrue 1
|
|
|
|
#define hrOK HRESULT(S_OK)
|
|
#define hrTrue HRESULT(S_OK)
|
|
#define hrFalse ResultFromScode(S_FALSE)
|
|
#define hrFail ResultFromScode(E_FAIL)
|
|
#define hrNotImpl ResultFromScode(E_NOTIMPL)
|
|
#define hrNoInterface ResultFromScode(E_NOINTERFACE)
|
|
#define hrNoMem WMDM_E_BUFFERTOOSMALL
|
|
#define hrAbort ResultFromScode(E_ABORT)
|
|
#define hrInvalidArg ResultFromScode(E_INVALIDARG)
|
|
|
|
/*----------------------------------------------------------------------------
|
|
CORg style error handling
|
|
(Historicaly stands for Check OLE Result and Goto)
|
|
----------------------------------------------------------------------------*/
|
|
|
|
#define DebugMessageCPRg(pwszFile, nLine)
|
|
#define DebugMessageCORg(pwszFile, nLine, hr)
|
|
#define DebugMessageCFRg(pwszFile, nLine)
|
|
#define DebugMessageCADORg(pwszFile, nLine, hr)
|
|
|
|
#define _UNITEXT(quote) L##quote
|
|
#define UNITEXT(quote) _UNITEXT(quote)
|
|
|
|
#define CPRg(p)\
|
|
do\
|
|
{\
|
|
if (!(p))\
|
|
{\
|
|
DebugMessageCPRg(UNITEXT(__FILE__), __LINE__);\
|
|
hr = hrNoMem;\
|
|
goto Error;\
|
|
}\
|
|
}\
|
|
while (fFalse)
|
|
|
|
#define CHRg(hResult) CORg(hResult)
|
|
|
|
#define CORg(hResult)\
|
|
do\
|
|
{\
|
|
hr = (hResult);\
|
|
if (FAILED(hr))\
|
|
{\
|
|
DebugMessageCORg(UNITEXT(__FILE__), __LINE__, hr);\
|
|
goto Error;\
|
|
}\
|
|
}\
|
|
while (fFalse)
|
|
|
|
#define CADORg(hResult)\
|
|
do\
|
|
{\
|
|
hr = (hResult);\
|
|
if (hr!=S_OK && hr!=S_FALSE)\
|
|
{\
|
|
hr = HRESULT_FROM_ADO_ERROR(hr);\
|
|
DebugMessageCADORg(UNITEXT(__FILE__), __LINE__, hr);\
|
|
goto Error;\
|
|
}\
|
|
}\
|
|
while (fFalse)
|
|
|
|
#define CORgl(label, hResult)\
|
|
do\
|
|
{\
|
|
hr = (hResult);\
|
|
if (FAILED(hr))\
|
|
{\
|
|
DebugMessageCORg(UNITEXT(__FILE__), __LINE__, hr);\
|
|
goto label;\
|
|
}\
|
|
}\
|
|
while (fFalse)
|
|
|
|
#define CWRg(fResult)\
|
|
{\
|
|
if (!(fResult))\
|
|
{\
|
|
hr = GetLastError();\
|
|
if (!(hr & 0xFFFF0000)) hr = HRESULT_FROM_WIN32(hr);\
|
|
DebugMessageCORg(UNITEXT(__FILE__), __LINE__, hr);\
|
|
goto Error;\
|
|
}\
|
|
}
|
|
|
|
#define CWRgl(label, fResult)\
|
|
{\
|
|
if (!(fResult))\
|
|
{\
|
|
hr = GetLastError();\
|
|
if (!(hr & 0xFFFF0000)) hr = HRESULT_FROM_WIN32(hr);\
|
|
DebugMessageCORg(UNITEXT(__FILE__), __LINE__, hr);\
|
|
goto label;\
|
|
}\
|
|
}
|
|
|
|
#define CFRg(fResult)\
|
|
{\
|
|
if (!(fResult))\
|
|
{\
|
|
DebugMessageCFRg(UNITEXT(__FILE__), __LINE__);\
|
|
hr = hrFail;\
|
|
goto Error;\
|
|
}\
|
|
}
|
|
|
|
#define CFRgl(label, fResult)\
|
|
{\
|
|
if (!(fResult))\
|
|
{\
|
|
DebugMessageCFRg(UNITEXT(__FILE__), __LINE__);\
|
|
hr = hrFail;\
|
|
goto label;\
|
|
}\
|
|
}
|
|
|
|
#define CARg(p)\
|
|
do\
|
|
{\
|
|
if (!(p))\
|
|
{\
|
|
hr = hrInvalidArg;\
|
|
goto Error;\
|
|
}\
|
|
}\
|
|
while (fFalse)
|
|
|
|
|
|
|
|
#endif // __MDSPDEFS_H__
|