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.
77 lines
2.3 KiB
77 lines
2.3 KiB
import "unknwn.idl";
|
|
|
|
cpp_quote("DEFINE_GUID(CLSID_FileHandleCache, 0xa93b88df, 0xef9d, 0x420c, 0xb4, 0x69, 0xce, 0x07, 0x4e, 0xbe, 0x94, 0xbc);")
|
|
cpp_quote("DEFINE_GUID(IID_IFileHandleCache, 0x3017e0e1, 0x94d6, 0x4896, 0xbc, 0x57, 0xb2, 0xdf, 0x75, 0x92, 0xd1, 0x75);")
|
|
|
|
typedef struct
|
|
{
|
|
// New lock description data
|
|
//
|
|
DWORD m_dwAccess;
|
|
DWORD m_dwLockType;
|
|
DWORD m_dwLockScope;
|
|
DWORD m_dwSecondsTimeout;
|
|
|
|
[unique, string] LPWSTR m_pwszResourceString;
|
|
[unique, string] LPWSTR m_pwszOwnerComment;
|
|
|
|
} SNewLockData;
|
|
|
|
typedef struct
|
|
{
|
|
// Lock handle description
|
|
//
|
|
DWORD_PTR h;
|
|
DWORD dwProcessID;
|
|
|
|
} SLockHandleData;
|
|
|
|
|
|
[
|
|
object,
|
|
uuid(3017e0e1-94d6-4896-bc57-b2df7592d175),
|
|
pointer_default(unique)
|
|
]
|
|
|
|
interface IFileHandleCache : IUnknown {
|
|
|
|
HRESULT HrRegisterWorkerProcess([in] DWORD dwProcessId);
|
|
|
|
HRESULT HrGetGUIDString( [in] UINT cchBufferLen,
|
|
[out, size_is(cchBufferLen)] WCHAR * pwszGUIDString,
|
|
[out] UINT * pcchGUIDString);
|
|
|
|
HRESULT HrGetNewLockData([in] DWORD_PTR hFile,
|
|
[in] DWORD dwProcessId,
|
|
[in] DWORD dwSid,
|
|
[in, size_is(dwSid)] BYTE * pbSid,
|
|
[in] SNewLockData * pnld,
|
|
[in] UINT cchBufferLen,
|
|
[out, size_is(cchBufferLen)] WCHAR * pwszLockToken,
|
|
[out] UINT * pcchLockToken);
|
|
|
|
HRESULT HrGetLockData([in] LARGE_INTEGER liLockID,
|
|
[in] DWORD dwSid,
|
|
[in, size_is(dwSid)] BYTE * pbSid,
|
|
[unique, in, string] LPCWSTR pwszPath,
|
|
[in] DWORD dwTimeout,
|
|
[out] SNewLockData * pnld,
|
|
[out] SLockHandleData * plhd,
|
|
[in] UINT cchBufferLen,
|
|
[out, size_is(cchBufferLen)] WCHAR * pwszLockToken,
|
|
[out] UINT * pcchLockToken);
|
|
|
|
HRESULT HrCheckLockID([in] LARGE_INTEGER liLockID,
|
|
[in] DWORD dwSid,
|
|
[in, size_is(dwSid)] BYTE * pbSid,
|
|
[unique, in, string] LPCWSTR pwszPath);
|
|
|
|
HRESULT HrDeleteLock([in] LARGE_INTEGER liLockID);
|
|
|
|
HRESULT HrGetAllLockDataForName([unique, in, string] LPCWSTR pwszPath,
|
|
[in] DWORD dwLockType,
|
|
[out] DWORD * pdwLocksFound,
|
|
[out, size_is( , *pdwLocksFound)] SNewLockData ** ppNewLockDatas,
|
|
[out, size_is( , *pdwLocksFound)] LPWSTR ** ppwszLockTokens);
|
|
};
|
|
|