Jump to content
Pedro B

[Resolvido] MapViewOfFile - FileOffset

Recommended Posts

Pedro B

Boas pessoal,

estou com problemas em conseguir perceber isto.

Eu estou a usar Memory Mapped Files em c++ (claro :) ) para ler um ficheiro que ainda não existe, mas quando existir vai ter uns quantos GB's então optei por esta abordagem de forma a conseguir ler o ficheiro por partes o mais rápido possivel e pelo que sei, usando a API Win32 para o fazer (com os memory mapped files) é uma das, senão a forma mais rápida de o fazer.

Para tal, é necessário criar o MapViewOfFile, o problema são os parametros (DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow). Pelo que vi a soma entre estes dois tem de ser igual a um offset que esteja no fileMapping (o qual é usado para criar a View, certo?) e tem também de ser um múltiplo do "allocation granularity", nem sei o que isto é...

Então se eu quiser "mapear" um bloco de 1Mb do ficheiro, como é que devo definir estes parametros?

Cumps

Edited by Pedro B

Share this post


Link to post
Share on other sites
Pedro B

ok, já consegui mapear o ficheiro.

Ainda assim ainda não consegui perceber como usar aqueles dois parametros, como calcular os valores para por lá.... Sei que ambos representam o offset a partir de onde quero começar a mapear o ficheiro e o último parametro é o número de bytes que quero carregar a partir daí. O problema é que não importa quantos bytes eu lá ponha, o ponteiro que a função MapViewOfFile devolve tem sempre o comprimento do ficheiro inteiro... Isto é normal ou, como eu penso estou a mapear o ficheiro inteiro?

Edited by Pedro B

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.