小编kam*_*mpi的帖子

如何获得大于4 Gb的文件大小?

我做了一个简单的函数,它获得了文件的大小.

int file_size( char * filename )
{
     int size;
     struct stat st;

     stat( filename, &st );
     size = st.st_size;

     return size;

}//file_size
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我有一个大于4Gb的文件比我得到一个否定号码,当然这不是正确的文件大小.那我怎么能得到如此大的文件大小?我认为,返回值应该是其他任何像int但我不知道什么,我不认为,这将解决我的问题.

谢谢,

kampi

更新:

嗨!

我找到了解决方案.我必须使用__stat64.我修改了我的功能,现在它正在检索实际大小.我用8Gb大文件测试了它.

unsigned long long int file_size( char * filename )
{
    unsigned long long int size;
    struct __stat64 st;

    __stat64( filename, &st );
    size = st.st_size;

   return size;

}//file_size
Run Code Online (Sandbox Code Playgroud)

并通知:

当我使用printf时,我不得不使用"%I64d"将其打印出来.

c windows filesize

10
推荐指数
2
解决办法
6243
查看次数

CreateProcessAsUser错误1314

我想在另一个用户下创建一个进程.所以我使用LogonUser和CreateProcessAsUser.但我的问题是,CreatePtocessAsUser总是返回错误代码1314,这意味着"客户端不持有所需的权限".所以我的问题是,我做错了什么?或者我怎样才能让权利人得到帮助呢?(我认为句柄应该有特权,或者我错了?)抱歉我的英语错误,但我的英语知识不是最好的:)

如果有人知道如何纠正我的申请,Plesase帮助.

这是我代码的一部分.

STARTUPINFO StartInfo;
PROCESS_INFORMATION ProcInfo;
TOKEN_PRIVILEGES tp;
memset(&ProcInfo, 0, sizeof(ProcInfo));
memset(&StartInfo, 0 , sizeof(StartInfo)); 
StartInfo.cb = sizeof(StartInfo); 
HANDLE handle = NULL;

if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ALL_ACCESS, &handle)) printf("\nOpenProcessError");

if (!LookupPrivilegeValue(NULL,SE_TCB_NAME,
//SE_TCB_NAME,
&tp.Privileges[0].Luid)) {
printf("\nLookupPriv error");
}

tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes =
SE_PRIVILEGE_ENABLED;//SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(handle, FALSE, &tp, 0, NULL, 0)) {
printf("\nAdjustToken error");
}

i = LogonUser(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, &handle);
printf("\nLogonUser return  : %d",i);
i = GetLastError();
printf("\nLogonUser getlast : %d",i);
if (! ImpersonateLoggedOnUser(handle) ) printf("\nImpLoggedOnUser!");

i = CreateProcessAsUser(handle, …
Run Code Online (Sandbox Code Playgroud)

createprocessasuser

9
推荐指数
2
解决办法
3万
查看次数

如何在BYTE数组中搜索模式?

我有一个字节数组:

BYTE Buffer[20000]; 此数组包含以下数据:

00FFFFFFFFFFFF0010AC4C4053433442341401030A2F1E78EEEE95A3544C99260F5054A54B00714F8180B3000101010101010101010121399030621A274068B03600DA281100001C000000FF003457314D44304353423443530A000000FC0044454C4C2050323231300A2020000000FD00384B1E5310000A20202020202000FA

我的问题是如何在这个数组中搜索像" 000000FC" 这样的模式?我真的不认为它很重要,但我需要索引,我也可以找到我的模式.有人可以为此提供一个例子,因为我真的不明白这个:(

c c++ windows pattern-matching

9
推荐指数
2
解决办法
1万
查看次数

如何释放()一个正确的malloc()结构?

我有一个结构malloc()'d,在使用它们之后,我想释放()它,但我的程序冻结在这里.谁能告诉我,我做错了什么?

这是我的代码:

struct data  
{  
char *filename;  
char *size;  
};   
 //primarypcs is a long type variable
struct data *primary = (struct data *)malloc( primarypcs * sizeof( struct data ) );  
memset( primary, 0, sizeof(struct data *) * primarypcs );  
...
...
...
for ( i = 0; i < primarypcs; i++ )  
{
   free( primary[i].filename );  //<----my program freezes here
   free( primary[i].size );      //<----or here
}
free( primary );  
Run Code Online (Sandbox Code Playgroud)

提前致谢!

kampi

编辑:

我如何正确malloc内存的文件名和大小?

EDIT2:

对不起,但我很着急,我没有告诉你所有你需要的信息.现在让我这样做:)基本上,我想创建一个应用程序,它获取两个给定驱动器/文件夹的文件列表,然后比较它们.我想(并且仍然这样),最简单的方法是,当我将文件名及其大小存储在如上所述的结构中时.所以我必须动态分配内存(我认为这就是他们所说的)文件名和大小以及结构的内容.

c malloc free pointers

7
推荐指数
1
解决办法
2816
查看次数

如何增加表示为字符串的IP地址?

我有一个char类型的IP地址像char ip ="192.123.34.134"我想增加最后一个值(134).有人应该怎么做?我想,我应该将它转换为整数,然后再回来,但不幸的是我不知道怎么做?:(我正在使用C++.

请帮我!

谢谢,kampi

c++ string ip-address

6
推荐指数
1
解决办法
1万
查看次数

如何创建多列列表框?

我正在开发一个程序,它应该列出所有文件及其大小(目前......)。我创建了一个简单的应用程序,它将数据写入列表框。我试图将数据写入两列(第一列应该是名称,在它旁边的另一列中,它是大小),但我不知道,我应该如何做到这一点。有人能帮我吗?

提前致谢!

坎皮

更新:

我尝试使用 ListControl.,但不幸的是我不能。我可以成功编译我的应用程序,但我只能看到空矩形。有人知道我做错了什么吗?

BOOL CGetFileListDlg::OnInitDialog()
{  
CDialog::OnInitDialog();

// Set the icon for this dialog.  The framework does this automatically
//  when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE);         // Set big icon
SetIcon(m_hIcon, FALSE);        // Set small icon

// TODO: Add extra initialization here

LVITEM lvItem;
LVCOLUMN lvColumn;
int nCol;

lvColumn.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
lvColumn.fmt = LVCFMT_CENTER;
lvColumn.cx = 10;
lvColumn.pszText = _T("Filename");
ListView_InsertColumn( m_List, 0, &lvColumn ); 
ListView_SetItemText( m_List, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ windows listbox

5
推荐指数
1
解决办法
2万
查看次数

如何正确处理一个巨大的字符串?

这可能是一个新手问题,但我想避免缓冲区溢出.我从注册表中读取了很多数据,这些数据将被上传到SQL数据库.我在循环中读取数据,并在每次循环后插入数据.我的问题是,这样,如果我读了20个键,并且下面的值是(每台计算机上的键数不同),那么我必须连接到SQL数据库20次.

但是我发现,有一种方法,创建存储过程,并传递整个数据,因此,SQL服务器将处理数据,我只需连接一次到SQL服务器.

不幸的是,我不知道如何处理这么大的字符串,以避免任何意外错误,如缓冲功能.所以我的问题是我应该如何声明这个字符串?

我应该只是创建一个字符串char string[ 15000 ];并连接值?或者有一种更简单的方法吗?

谢谢!

c windows

5
推荐指数
1
解决办法
1007
查看次数

如何在ListView中插入彩色文本?

我有3个coloumns列表视图.前两列有值,第三列是空的.我想知道,我怎样才能在第三列中插入彩色文本?我不想为整行着色,只有第三列有颜色变化.

提前致谢!

kampi

c windows mfc

4
推荐指数
1
解决办法
287
查看次数

如何以编程方式确定Windows是否正在关闭?

我正在制作一个可以在随机PC上随机运行的应用程序。它工作正常,但是,如果PC当前正在关闭,则无法阅读WMI,并且会出现一些错误。因此,我需要确定PC当前是否正在关闭,这样我就可以避免这些错误。有人有想法吗?

谢谢!

c windows winapi

4
推荐指数
2
解决办法
2223
查看次数

如何正确地模拟用户的服务?

我正在使用一项服务,该服务应模拟已登录的用户.

我的代码到目前为止,基本的错误处理:

 // get the active console session ID of the logged on user
if ( !WTSQueryUserToken( WTSGetActiveConsoleSessionId(), &hToken ) )
{
    ShowErrorText( "WTSQueryUserToken failed.", GetLastError( ), true );
    return;
}

HANDLE hDuplicated;

// duplicate the token
if ( !DuplicateToken( hToken, SecurityImpersonation, &hDuplicated ) )
{
    ShowErrorText( "DuplicateToken failed.", GetLastError( ), true );
}
else 
{
    ShowErrorText( "DuplicateToken succeeded.", 0, true );
}

// impersonate the logged on user
if ( !ImpersonateLoggedOnUser( hToken ) )
{
    ShowErrorText( "ImpersonateLoggedOnUser failed.", GetLastError(), …
Run Code Online (Sandbox Code Playgroud)

c++ windows service impersonation

4
推荐指数
1
解决办法
9226
查看次数