Commit 7478f15f authored by Fabian Maurer's avatar Fabian Maurer Committed by Alexandre Julliard

coml2: Move StgIsStorageFile from ole32.

parent eab7899e
......@@ -22,7 +22,7 @@
@ stub StgCreatePropSetStg
@ stub StgCreatePropStg
@ stub StgCreateStorageEx
@ stub StgIsStorageFile
@ stdcall StgIsStorageFile(wstr)
@ stdcall StgIsStorageILockBytes(ptr)
@ stub StgOpenPropStg
@ stub StgOpenStorage
......
......@@ -184,3 +184,45 @@ HRESULT WINAPI StgIsStorageILockBytes(ILockBytes *plkbyt)
return S_FALSE;
}
/******************************************************************************
* StgIsStorageFile [coml2.@]
*/
HRESULT WINAPI StgIsStorageFile(LPCOLESTR fn)
{
HANDLE hf;
BYTE magic[8];
DWORD bytes_read;
TRACE("%s\n", debugstr_w(fn));
hf = CreateFileW(fn, GENERIC_READ,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (hf == INVALID_HANDLE_VALUE)
return STG_E_FILENOTFOUND;
if (!ReadFile(hf, magic, 8, &bytes_read, NULL))
{
WARN(" unable to read file\n");
CloseHandle(hf);
return S_FALSE;
}
CloseHandle(hf);
if (bytes_read != 8)
{
TRACE(" too short\n");
return S_FALSE;
}
if (!memcmp(magic, STORAGE_magic, 8))
{
TRACE(" -> YES\n");
return S_OK;
}
TRACE(" -> Invalid header.\n");
return S_FALSE;
}
......@@ -9339,55 +9339,6 @@ end:
return r;
}
/******************************************************************************
* StgIsStorageFile [OLE32.@]
* Verify if the file contains a storage object
*
* PARAMS
* fn [ I] Filename
*
* RETURNS
* S_OK if file has magic bytes as a storage object
* S_FALSE if file is not storage
*/
HRESULT WINAPI
StgIsStorageFile(LPCOLESTR fn)
{
HANDLE hf;
BYTE magic[8];
DWORD bytes_read;
TRACE("%s\n", debugstr_w(fn));
hf = CreateFileW(fn, GENERIC_READ,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (hf == INVALID_HANDLE_VALUE)
return STG_E_FILENOTFOUND;
if (!ReadFile(hf, magic, 8, &bytes_read, NULL))
{
WARN(" unable to read file\n");
CloseHandle(hf);
return S_FALSE;
}
CloseHandle(hf);
if (bytes_read != 8) {
TRACE(" too short\n");
return S_FALSE;
}
if (!memcmp(magic,STORAGE_magic,8)) {
TRACE(" -> YES\n");
return S_OK;
}
TRACE(" -> Invalid header.\n");
return S_FALSE;
}
/************************************************************************
* OleConvert Functions
***********************************************************************/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment