FILE_RENAME_INFO FileNameLength size_of::

Не могу понять, что я не так делаю.

use winapi::shared::ntdef::LPWSTR;
use std::ffi::{CString, OsStr};
use std::os::windows::ffi::OsStrExt;
use winapi::shared::minwindef::DWORD;

pub fn str_to_lpwstr(rust_str: &str) -> LPWSTR {
OsStr::new(rust_str)
       .encode_wide()
       .chain(Some(0).into_iter())
       .collect::<Vec<_>>()
       .as_ptr() as LPWSTR
}

const lpwstr: LPWSTR = str_to_lpwstr(":wtfbbq");

let mut info = FILE_RENAME_INFO { FileNameLength: std::mem::size_of::<lpwstr>() as DWORD };
let mut info = FILE_RENAME_INFO { FileNameLength: std::mem::size_of::<lpwstr>() as DWORD};
                                                                      ^^^^^^ unexpected const argument
let mut info = FILE_RENAME_INFO { FileNameLength: std::mem::size_of::<lpwstr>() as DWORD};
                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 1 type argument
let mut info = FILE_RENAME_INFO { FileNameLength: std::mem::size_of::<lpwstr>() as DWORD};
               ^^^^^^^^^^^^^^^^ missing `FileName`, `ReplaceIfExists`, `RootDirectory`

На си языке написано так:

#define DS_STREAM_RENAME L":wtfbbq"

FILE_RENAME_INFO fRename;
LPWSTR lpwStream = DS_STREAM_RENAME;
fRename.FileNameLength = sizeof(lpwStream);

Ответы (0 шт):