// // efsrpc.idl // [ uuid(c681d488-d850-11d0-8c52-00c04fd90f7e), version(1.0), ] interface efsrpc { import "efsimp.idl" ; #define MAX_SID_SIZE 256 typedef [context_handle] void * PEXIMPORT_CONTEXT_HANDLE; typedef [ref] PEXIMPORT_CONTEXT_HANDLE * PPEXIMPORT_CONTEXT_HANDLE; typedef pipe unsigned char EFS_EXIM_PIPE; // // Explicit binding for OpenFileRaw // long EfsRpcOpenFileRaw( [in] handle_t binding_h, [out] PPEXIMPORT_CONTEXT_HANDLE pphContext, [in, string] wchar_t *FileName, [in] long Flags ); long EfsRpcReadFileRaw( [in] PEXIMPORT_CONTEXT_HANDLE phContext, [out] EFS_EXIM_PIPE *EfsOutPipe ); long EfsRpcWriteFileRaw( [in] PEXIMPORT_CONTEXT_HANDLE phContext, [in] EFS_EXIM_PIPE *EfsInPipe ); void EfsRpcCloseRaw( [in, out] PPEXIMPORT_CONTEXT_HANDLE pphContext ); long EfsRpcEncryptFileSrv( [in] handle_t binding_h, [in, string] wchar_t *FileName ); long EfsRpcDecryptFileSrv( [in] handle_t binding_h, [in, string] wchar_t *FileName, [in] unsigned long OpenFlag ); // // Beta 2 API // DWORD EfsRpcQueryUsersOnFile( [in] handle_t binding_h, [in, string] LPCWSTR lpFileName, [out] PENCRYPTION_CERTIFICATE_HASH_LIST * pUsers ); DWORD EfsRpcQueryRecoveryAgents( [in] handle_t binding_h, [in, string] LPCWSTR lpFileName, [out] PENCRYPTION_CERTIFICATE_HASH_LIST * pRecoveryAgents ); DWORD EfsRpcRemoveUsersFromFile( [in] handle_t binding_h, [in, string] LPCWSTR lpFileName, [in] PENCRYPTION_CERTIFICATE_HASH_LIST pUsers ); DWORD EfsRpcAddUsersToFile( [in] handle_t binding_h, [in, string] LPCWSTR lpFileName, [in] PENCRYPTION_CERTIFICATE_LIST pEncryptionCertificates ); DWORD EfsRpcSetFileEncryptionKey( [in] handle_t binding_h, [in, unique] PENCRYPTION_CERTIFICATE pEncryptionCertificate ); DWORD EfsRpcNotSupported( [in] handle_t binding_h, [in, string] LPCWSTR lpSrcFileName, [in, string] LPCWSTR lpDestFileName, [in] DWORD dwCreationDistribution, [in] DWORD dwAttributes, [in, unique] PEFS_RPC_BLOB pRelativeSD, [in] BOOL bInheritHandle ); DWORD EfsRpcFileKeyInfo( [in] handle_t binding_h, [in, string] LPCWSTR lpFileName, [in] DWORD InfoClass, [out] PEFS_RPC_BLOB *KeyInfo ); DWORD EfsRpcDuplicateEncryptionInfoFile( [in] handle_t binding_h, [in, string] LPCWSTR lpSrcFileName, [in, string] LPCWSTR lpDestFileName, [in] DWORD dwCreationDistribution, [in] DWORD dwAttributes, [in, unique] PEFS_RPC_BLOB pRelativeSD, [in] BOOL bInheritHandle ); }