|
To get a handle to the driver you call CreateFile passing the driver symbolic name (which depends on the device), then you can call ReadFile and WriteFile (if they are implemented by the driver). For more advanced stuff, you can call DeviceIOControl and pass device specific control codes.
So, I repeat myself once again (I think you alread asked questions about it yesterday too): we can't help you with more because the codes and the driver symbolic name depends on how they implemented their driver. So, you should have received some documentation with the device. Did you read it before asking questions here ? If you didn't receive documentation, you should contact the supplier of the device.
|
|
|
|
|
What sort of device is it, and what does it support in the way of IOCTLs? The manufacturer wil know this.
To talk to it, as Cedric says, you use CreateFile() DeviceIOControl() etc.
Morality is indistinguishable from social proscription
|
|
|
|
|
I have to simulate a device as EPSONSTYLUS 7300 including printer and mass storage.
after created a device with 2 interface one for printer and for USB.
I plug it to my PC, and windows can detect it immediately.
Then is my created device (On Computer management)
Composite device
USB#VID_04B8&PID_0838#061010702081629190
one is Printer Device
USB#VID_04B8&PID_0838#MI_01&ED020F5&0&0001
second is USB device
USB#VID_04B8&PID_0838#MI_02&ED020F5&0&0002
But infact i must create a device with can be compatible with Epson printer device as
USBPRINT\EPSONSTYLUS_CX7300\7&C3F6D19&0&USB001
although i set up my configurations as
http://www.usb.org/developers/devclass_docs/usbprint11.pdf
How Can i configure it in my code
Thanks a lot.
xuanthinh
|
|
|
|
|
Hi,
Can you use Device Driver type API's such as KeRaiseIrql in application code .exe DLL or dos it have to be in a .sys device driver
|
|
|
|
|
I cannot imagine why you would want modify IRQ priorities from usermode. You cannot use this function in a usermode application.
Best Wishes,
-David Delaune
|
|
|
|
|
I wanted to control block lookup in my DLL ETHREAD etc.... can I do that in .exe/DLL or is that restricted to .sys Device Driver files
|
|
|
|
|
can I do SetKmode if I want to look at lets ETHREAD of a Thread the TEB in exe/DLL
|
|
|
|
|
Correct. You cant use it in user mode code.
Some kernel funcitons do map to user mode (CreateFile() maps to ZwCreateFile() for example) but, you still canot call them directly.
Same for Kernel mode, you cant call the Win32 API.
The ONLY way to cross the line from Kernel to User modes (the IO manager) is via CreateFile(), ReadFile() WriteFile() and DeviceIOControl().
Memory too is seperate. Kernel mode is the top 2 gig on a 32 bit processor, user mode is the bottom 2 gig.
You can under certain circumstances acess user mode memory from kernel mode (in IOP handler routines since the process is mapped in at that point) and there are tricks for sharing events (quite usefull).
Bu, to aid clarity, think of user and kernel modes as totally seperate.
Morality is indistinguishable from social proscription
|
|
|
|
|
Then my next question is the SetKmode is only for Windwos CE not XP correct
|
|
|
|
|
ForNow wrote: only for Windwos CE not XP correct?
Yes
|
|
|
|
|
I know you you are the one who told me this thankx
How about I start a Kernel mode thread PsThreadCreate... maybe to do my Kernel mode work
whitout wasting your time is there anyway I can do Kernel mode type work in user mode
or should I forgot this
|
|
|
|
|
ForNow wrote: How about I start a Kernel mode thread PsThreadCreate... maybe to do my Kernel mode work
PsCreateSystemThread can only be called from kernel mode so it won't help you in user mode.
ForNow wrote: whitout wasting your time is there anyway I can do Kernel mode type work in user mode
No you can't. That's why one is called kernel and one is called user - they are very distinct and only communicate through a few well-defined interfaces.
Judy
|
|
|
|
|
|
Hi,
I am using Stackwalk to go from the DLL_THREAD_ATTACH current thread to the originating thread
There is an APC type function KiUserAPcDisptach that messes up the stack Frame
does anyone know if APC type call saves the current stack Frame somewhere maybe a context pointer
thankx
|
|
|
|
|
Hi,
I am getting the following error 0xC0000005: Access Violation., is there is a reason why I am getting, my code compiles correctly but while debugging i am getting this error.
here i am getting the error
CTagList *pObj= (CTagList *)lstTagInfo.GetNext(pos);
With Regard
Mytheensha
|
|
|
|
|
sorry i wrongly post here
With Regard
Mytheensha
|
|
|
|
|
Hi,
As a concept, I would like to write a kernel driver just to read kernel structure data and send the information back to a user mode application (in Windows XP). I have absolutely no experience doing this kind of thing, and, in all honesty, it scares the hell out of me. I have read much of the available literature (Windows Internals, and the documentation that comes with the Microsoft DDK), but, the kernel is a murky, nebulous region of the cosmos, and I am extremely reluctant to invade it without, say, a God-like sense of comprehension.
Initially, my appraoch is to use the source examples provided with the DDK, but, I'm wondering if testing something like that can destroy or damage my operating system, or the device drivers currently residing there. If this is an evolutionary process, I don't want to become bytestream roadkill.
Any good suggestions from those of you have survived the development process, besides reading the forum posts at OSR and Sysinternals?
|
|
|
|
|
Baltoro wrote: Initially, my appraoch is to use the source examples provided with the DDK, but, I'm wondering if testing something like that can destroy or damage my operating system, or the device drivers currently residing there.
Yes, in fact when I first started developing device drivers I was locked out of my operating system several times. It was quite embarrassing. I would highly recommend testing your device drivers in VMWare or VirtualPC. It is extremely easy to create a race condition in device drivers. It can be a challenge to repair the OS when a faulty driver is installed. Once I had to edit the registry from a boot CD to prevent an upper level filter driver from attaching. No more driver development outside of VMWare for me! I have since learned my lesson!
There are additional benefits to running your test drivers in a virtual environment. It makes debugging the driver much easier. There is a gentleman named Dana Epp[^] who has a site dedicated to those seeking ring-0[^]. He has written a tutorial showing how to use WinDbg with VMWare[^].
I have found the following blogs to sometimes contain useful information:
A Hole In My Head[^]
Pointless Blathering[^]
It Goes To Eleven[^]
OSR online[^] is also a great resource. There are many knowledgeable engineers there who are willing to help out. I would highly recommend joining the discussion lists. See you there!
Best Wishes,
-David Delaune
|
|
|
|
|
David Delaune,
Thank you very much for the excellent suggestions, that is exactly the type of information I was looking for, but, was completely oblivious to.
|
|
|
|
|
Baltoro wrote: I'm wondering if testing something like that can destroy or damage my operating system
Oh yes!
Baltoro wrote: or the device drivers currently residing there
Deffinitely!
Baltoro wrote: If this is an evolutionary process
And about as slow. But more painfull.
Baltoro wrote: Any good suggestions
1) Ghost your system. You are going to need it.
2) Never set a test driver to auto start. You can get into a boot-bsod-boot-bsod loop.
3) Get Walter Oneys book.
4) Use a DDK sample to start with. Say, a simple IO, or a write to buffer/read from same buffer driver to het a feel if you like.
I have spent about 10 years writing drivers, still learning stuff!
Morality is indistinguishable from social proscription
|
|
|
|
|
fat_boy,
Thanks, I was worried about actually loading and executing, and the potential for irrevocably damaging essential components.
Now, I know,...
Thanks again, I really appreciate it.
|
|
|
|
|
Hey guys,
I'm developing an application that a user can design and print labels for CDs and DVDs. I'm wanting to add the functionality to print directly on the disk if the printer has the capability. The question is: How do I find out if the printer can do direct disk printing? The .Net framework doesn't seem to provide an interface for interacting with such printers. I have wrote a number of manufactures asking for advice but they didn't seem interested in talking to me when they found out I wasn't apart of some big company. Can you pros here a CP help me?
Cheers,
Richard
If you could rent a programmer a hour and a half for a dollar and a half, how much would he charge for 10 hours?
|
|
|
|
|
Certain windows OS'es such as Vista and Windows Server 2003 with SP1 can create partitions more than 2TB in size using GPT. Suppose I have such machine with single partition spanning 3TB in size under drive letter D. Would a regular windows XP 32bit machine (which do not support GPT by the way) have any problems connecting to that partition when mapped to \\machinename\D$? Any issues when reading or writing data?
Anybody has experience doing something like this?
Thanks.
|
|
|
|
|
The SMB protocol used by Windows file sharing doesn't deal in disk offsets. It asks the server to open the file for it, passing the filename to get a handle. The fact that D$ is the root of the filesystem is irrelevant.
The SMB protocol supports 64-bit offsets for read and write operations, so you can manipulate very large files (> 4GB).
DoEvents: Generating unexpected recursion since 1991
|
|
|
|
|
I'm not sure you understood the issue, either that or I'm not seeing definitive answer to my question in your reply.
See this link:
http://www.carltonbale.com/2007/05/how-to-break-the-2tb-2-terabyte-file-system-limit/
Most of the older windows operating systems (including windows xp 32 bit) only support MBR partitioning meaning they cannot create or work with partitions more than 2TB in volume. To get around this problem Microsoft introduced GPT partitioning in latest operating systems. With GPT there are virtually no limits on the partition size.
The problem here is not connecting to the drive root or working with files >4GB. It's whether the system that does not support GPT such as windows xp 32bit can connect to a network share >2TB in size and work correctly with it.
I would hope that network protocol would abstract it all away. However, I have read reports that xp had problems writing to linux (yes, I know, slightly different) network share that was 3TB in size. So I wanted to ask if anyone knows if that really is a problem or not.
|
|
|
|