// Provides functionality to resolve a symbolic link within the object
// directory passed in.
-NTSTATUS ResolveSymbolicLink(const std::wstring& directory_name,
- const std::wstring& name,
- std::wstring* target) {
+NTSTATUS ResolveSymbolicLink(const base::string16& directory_name,
+ const base::string16& name,
+ base::string16* target) {
NtOpenDirectoryObjectFunction NtOpenDirectoryObject = NULL;
ResolveNTFunctionPtr("NtOpenDirectoryObject", &NtOpenDirectoryObject);
return status;
}
- target_path.Buffer = new wchar_t[target_length + 1];
target_path.Length = 0;
- target_path.MaximumLength = target_length;
+ target_path.MaximumLength = static_cast<USHORT>(target_length);
+ target_path.Buffer = new wchar_t[target_path.MaximumLength + 1];
status = NtQuerySymbolicLinkObject(symbolic_link, &target_path,
&target_length);
if (status == STATUS_SUCCESS) {
DWORD session_id = 0;
ProcessIdToSessionId(::GetCurrentProcessId(), &session_id);
- std::wstring base_named_objects_path;
+ base::string16 base_named_objects_path;
NTSTATUS status = ResolveSymbolicLink(L"\\Sessions\\BNOLINKS",
base::StringPrintf(L"%d", session_id),
bool SyncPolicy::GenerateRules(const wchar_t* name,
TargetPolicy::Semantics semantics,
LowLevelPolicy* policy) {
- std::wstring mod_name(name);
+ base::string16 mod_name(name);
if (mod_name.empty()) {
return false;
}
if (TargetPolicy::EVENTS_ALLOW_READONLY == semantics) {
// We consider all flags that are not known to be readonly as potentially
// used for write.
- DWORD allowed_flags = SYNCHRONIZE | GENERIC_READ | READ_CONTROL;
- DWORD restricted_flags = ~allowed_flags;
+ uint32 allowed_flags = SYNCHRONIZE | GENERIC_READ | READ_CONTROL;
+ uint32 restricted_flags = ~allowed_flags;
open.AddNumberMatch(IF_NOT, OpenEventParams::ACCESS, restricted_flags, AND);
}
return true;
}
-DWORD SyncPolicy::CreateEventAction(EvalResult eval_result,
- const ClientInfo& client_info,
- const std::wstring &event_name,
- uint32 event_type,
- uint32 initial_state,
- HANDLE *handle) {
+NTSTATUS SyncPolicy::CreateEventAction(EvalResult eval_result,
+ const ClientInfo& client_info,
+ const base::string16 &event_name,
+ uint32 event_type,
+ uint32 initial_state,
+ HANDLE *handle) {
NtCreateEventFunction NtCreateEvent = NULL;
ResolveNTFunctionPtr("NtCreateEvent", &NtCreateEvent);
HANDLE local_handle = NULL;
status = NtCreateEvent(&local_handle, EVENT_ALL_ACCESS, &object_attributes,
- static_cast<EVENT_TYPE>(event_type), initial_state);
+ static_cast<EVENT_TYPE>(event_type),
+ static_cast<BOOLEAN>(initial_state));
if (NULL == local_handle)
return status;
return status;
}
-DWORD SyncPolicy::OpenEventAction(EvalResult eval_result,
- const ClientInfo& client_info,
- const std::wstring &event_name,
- uint32 desired_access,
- HANDLE *handle) {
+NTSTATUS SyncPolicy::OpenEventAction(EvalResult eval_result,
+ const ClientInfo& client_info,
+ const base::string16 &event_name,
+ uint32 desired_access,
+ HANDLE *handle) {
NtOpenEventFunction NtOpenEvent = NULL;
ResolveNTFunctionPtr("NtOpenEvent", &NtOpenEvent);