Leaked source code of windows server 2003
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

#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__