-1

void pf の下にファイル パス パラメータを追加するにはどうすればよいですか? (私はC++が初めてです)

ご覧のとおり、特定のファイルのキャッシュを物理メモリに強制的に格納しようとしています。

コード:

#include <windows.h>
#include <cstdio>

void pf(const char* name) {

HANDLE file = CreateFile(name, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0,   OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(file == INVALID_HANDLE_VALUE) { printf("couldn't open %s\n", name); return; };

unsigned int len  = GetFileSize(file, 0);

HANDLE mapping  = CreateFileMapping(file, 0, PAGE_READONLY, 0, 0, 0);
if(mapping == 0) { printf("couldn't map %s\n", name); return; }

const char* data = (const char*) MapViewOfFile(mapping, FILE_MAP_READ, 0, 0, 0);

if(data)
{
    printf("prefetching %s... ", name);

    // need volatile or need to use result - compiler will otherwise optimize out whole loop
    volatile unsigned int touch = 0;

    for(unsigned int i = 0; i < len; i += 4096)
        touch += data[i];
}
else
    printf("couldn't create view of %s\n", name);

UnmapViewOfFile(data);
CloseHandle(mapping);
CloseHandle(file);
}

int main(int argc, const char** argv)
{
if(argc >= 2) for(int i = 1; argv[i]; ++i) pf(argv[i]);
return 0;
}
4

1 に答える 1

0

どうやら C++ についてほとんど何も知らないため、質問の言葉遣いが非常に不十分です。これにより、開始する方法が提供されます。main 関数を次のように置き換えます。

int main(int argc, const char** argv)
{
    pf("C:\\SomeDir\\SomeFile.ext");
    return 0;
}

それから本を手に入れて、文字列と関数がどのように機能するかを学び始めてください。

于 2013-11-08T03:27:06.770 に答える