|
fat_boy wrote: Unless he didnt paste all his code in (ie he is using the PAGED pragma)
That is what I was suspecting and was referring to when I talked about a pragma asociated with the initialization code. My guess on the crash is that after the OP changes the driver name to use that paged variable and DriverEntry returns, the page fault occurs as soon as the driver object is used somewhere not at Passive level since it references paged memory.
Judy
|
|
|
|
|
Yeah, a stack trace would show whether the bug is due to setting the name in the devo, or something else referencing the name, now in this drivers image.
I suspect its the former though.
Morality is indistinguishable from social proscription
|
|
|
|
|
By the way, when you get a crash like this, then you can look at the memory dump in WinDbg. The crash dump will either be called memory.dmp in the windows dir or it'll be in the minidump dir dependig on how your machine is set up.
The best way to fix bugs though is kernel debuging. Take alook in the DDK for how to do this. (Null modem cable, modify boot.ini, and use windbg)
Morality is indistinguishable from social proscription
|
|
|
|
|
I have several USB drives, as I would guess most people do. Recently I have found that when I plug it in, windows explorer will not find it and show it in the list of available drives. I have tried the microsoft recommendation (a registry hack), and have made sure the disk manager is looking to place in in the right drive letter (and the driver is not occupied), I have tried, as I found suggested in one place, rebooting with the drive in place, it shows up then but if I remove it and plug it back in nada.
A friend at work has the same problem, he seems to have gotten lucky and has one that works (between us we have a dozen or so, different brands)
Open a DOS windows, go to the F: drive and there it is. Open Total commander or something liek that it shows up. It even shows up if I try to do a File -> save as, it just will not show up in explorer... and yes I did google it.
This just started happening recently (XP SP2 with a company that is anal about pushing service packs out as son as they are released)
Any ideas?
Thanks
|
|
|
|
|
Hi,
I want to communicate with a USB device from my PC by using Visual C++.The device is a RF-ID.So I do not need to transfer large files, I only need to read the ID from RF-ID. How can I do that simply? I search the web some but the sources that I found are more advanced than I can understand. Can you seggest me a simple way because I am not much experienced?
Thanks for any help
ibrahim
|
|
|
|
|
If you didn't receive any documentation with the device (which is highly doubt), you should contact the supplier of the device because the way to communicate with the device driver is in general specific to the device (so, in other words, we can't help without having much more information).
|
|
|
|
|
The problem is that I don't know how to communicate with the driver by using programmming languages. For example I am using Visual C++.What is the code for the communication?I have not the documentation but I will get it.
Thanks
|
|
|
|
|
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
|
|
|
|