Direct Screen memory address?

  • Thread starter Thread starter Nadav
  • Start date Start date
N

Nadav

Hi,

I am trying to get a direct pointer to the address of the screen ( something
like 0x0b00 in the happy DOS days ), how can I do that?
Should this be done in the kernel or it can also be done in the App layer?
Is there a contant base address to the screen memory?
What API should I use?

ThanX
Nadav
 
Hi,

You just cannot do that and you should never ever think of writing Windows
programs this way. If you prefer good old screen memory manipulation, you
can look at DirectDraw and its surface objects enabling direct pixel byte
manipulation from your code.
 
Well, Actually I am trying to implement my own screen capture algorithm,
this requires me to 'read' ( and not write ) the screen, getting a direct
memory pointer will give the best performance ( I Guess )...

What alternatives are there for getting a reference to the screen buffer?
Does DirectDraw enable direct screen bytes access or just IDirectDrawSurface
memory access?
Isn't DirectDraw is deprecated?

Dmitriy Lapshin said:
Hi,

You just cannot do that and you should never ever think of writing Windows
programs this way. If you prefer good old screen memory manipulation, you
can look at DirectDraw and its surface objects enabling direct pixel byte
manipulation from your code.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

Nadav said:
Hi,

I am trying to get a direct pointer to the address of the screen ( something
like 0x0b00 in the happy DOS days ), how can I do that?
Should this be done in the kernel or it can also be done in the App layer?
Is there a contant base address to the screen memory?
What API should I use?

ThanX
Nadav
 
DirectDraw isnt being updated, but the interfaces are supported.

DirectDraw and Direct3D provide for video memory access thru surfaces or
textures, respectively.

in protected mode and Win32, you cant do exactly what you are writing, those
were DOS addresses. while "something" is at those addresses for compat
reasons, it doesnt point to exactly what you need.

new times need new tools, its best to learn what the new way is to do this.

have you tried a google search on "directx screen capture" since this is a
frequent request I would be surprised if someone hadnt written and published
something on this.

the trick is getting into another processes video memory. in both windowed
and fullscreen-exclusive modes.

Nadav said:
Well, Actually I am trying to implement my own screen capture algorithm,
this requires me to 'read' ( and not write ) the screen, getting a direct
memory pointer will give the best performance ( I Guess )...

What alternatives are there for getting a reference to the screen buffer?
Does DirectDraw enable direct screen bytes access or just IDirectDrawSurface
memory access?
Isn't DirectDraw is deprecated?

Dmitriy Lapshin said:
Hi,

You just cannot do that and you should never ever think of writing Windows
programs this way. If you prefer good old screen memory manipulation, you
can look at DirectDraw and its surface objects enabling direct pixel byte
manipulation from your code.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

Nadav said:
Hi,

I am trying to get a direct pointer to the address of the screen ( something
like 0x0b00 in the happy DOS days ), how can I do that?
Should this be done in the kernel or it can also be done in the App layer?
Is there a contant base address to the screen memory?
What API should I use?

ThanX
Nadav
 
Well, The direction I am getting to is 'Mirror Display Drivers'/'dx
minidribers'...

Phil Taylor said:
DirectDraw isnt being updated, but the interfaces are supported.

DirectDraw and Direct3D provide for video memory access thru surfaces or
textures, respectively.

in protected mode and Win32, you cant do exactly what you are writing, those
were DOS addresses. while "something" is at those addresses for compat
reasons, it doesnt point to exactly what you need.

new times need new tools, its best to learn what the new way is to do this.

have you tried a google search on "directx screen capture" since this is a
frequent request I would be surprised if someone hadnt written and published
something on this.

the trick is getting into another processes video memory. in both windowed
and fullscreen-exclusive modes.

Nadav said:
Well, Actually I am trying to implement my own screen capture algorithm,
this requires me to 'read' ( and not write ) the screen, getting a direct
memory pointer will give the best performance ( I Guess )...

What alternatives are there for getting a reference to the screen buffer?
Does DirectDraw enable direct screen bytes access or just IDirectDrawSurface
memory access?
Isn't DirectDraw is deprecated?

in message news:[email protected]...
Hi,

You just cannot do that and you should never ever think of writing Windows
programs this way. If you prefer good old screen memory manipulation, you
can look at DirectDraw and its surface objects enabling direct pixel byte
manipulation from your code.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

Hi,

I am trying to get a direct pointer to the address of the screen (
something
like 0x0b00 in the happy DOS days ), how can I do that?
Should this be done in the kernel or it can also be done in the App layer?
Is there a contant base address to the screen memory?
What API should I use?

ThanX
Nadav
 
my quick search yields several interesting hits
http://www.codeproject.com/gdi/barry_s_screen_capture.asp
http://codeguru.earthweb.com/cs_graphics/CaptureScreen.html
http://www.codetools.com/bitmap/screencapture.asp

those should be valuable starting points, depending on your language of
choice.

Nadav said:
Well, The direction I am getting to is 'Mirror Display Drivers'/'dx
minidribers'...

Phil Taylor said:
DirectDraw isnt being updated, but the interfaces are supported.

DirectDraw and Direct3D provide for video memory access thru surfaces or
textures, respectively.

in protected mode and Win32, you cant do exactly what you are writing, those
were DOS addresses. while "something" is at those addresses for compat
reasons, it doesnt point to exactly what you need.

new times need new tools, its best to learn what the new way is to do this.

have you tried a google search on "directx screen capture" since this is a
frequent request I would be surprised if someone hadnt written and published
something on this.

the trick is getting into another processes video memory. in both windowed
and fullscreen-exclusive modes.

Nadav said:
Well, Actually I am trying to implement my own screen capture algorithm,
this requires me to 'read' ( and not write ) the screen, getting a direct
memory pointer will give the best performance ( I Guess )...

What alternatives are there for getting a reference to the screen buffer?
Does DirectDraw enable direct screen bytes access or just IDirectDrawSurface
memory access?
Isn't DirectDraw is deprecated?

in message Hi,

You just cannot do that and you should never ever think of writing Windows
programs this way. If you prefer good old screen memory
manipulation,
you
can look at DirectDraw and its surface objects enabling direct pixel byte
manipulation from your code.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

Hi,

I am trying to get a direct pointer to the address of the screen (
something
like 0x0b00 in the happy DOS days ), how can I do that?
Should this be done in the kernel or it can also be done in the App
layer?
Is there a contant base address to the screen memory?
What API should I use?

ThanX
Nadav
 
Back
Top