hardvérových prerušenia a paralelne vo Visual C alebo C Builder

I

is_razi

Guest
nazdar
je tu niekto, kto môže zaviesť mi ebook o hardvérových prerušenia a prepojenie s Microsoft visualc alebo C Builder.

díky moc.<img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Confused" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Confused" border="0" /><img src="http://www.edaboard.com/images/smiles/icon_confused.gif" alt="Confused" border="0" />
 
Ahoj jsem writeen niektorých kód pre prístup k hradware pre výhru 32 platformu
napr Win NT XP & 95 & 98 for BCC stavitel pomocou verejných libeary (dll)

PM sa ma, či vaša interstedbobi

 
Ahoj ..

Môžete použiť WinDriver z junge vytvoriť paralelné prerušiť
s C Builder / MS VC

 
Môžete mi pomôcť?
Daj mi nejaký ukážkový kód pre vytvorenie paralelnej prerušiť?

 
/************************************************* *****************/
/ * Príklad NT/2000/XP Přeruąovací & Driver DPC * /
/ * Copyright 2001 Craig Peacock, Craig.Peacock (at) beyondlogic.org * /
/ * Pozri http://www.beyondlogic.org pre úplný opis * /
/ * Aktualizované
11. novembra 2001 * /
/************************************************* *****************/

#
Include <ntddk.h>

#
Define PortAddress 0x378
#
Define KONTROLNÝCH PortAddress 2
#
Define outportb (adresa, BYTE) výst (adresa, BYTE)
#
Define inportb (adresa) INP (adresa)

typedef struct (_LOCAL_DEVICE_INFO
PKINTERRUPT InterruptObject;
ULONG Level;
ULONG Vektorové;
KAFFINITY Affinity;
) LOCAL_DEVICE_INFO, * PLOCAL_DEVICE_INFO;

NTSTATUS InterruptCreateDispatch (
V PDEVICE_OBJECT DeviceObject,
V PIRP IRP
)
(
IRP-> IoStatus.Information = 0;
IRP-> IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest (IRP, IO_NO_INCREMENT);
návrat STATUS_SUCCESS;
)

Boolean InterruptIsr (IN PKINTERRUPT Přeruąovací,
IN OUT PVOID Kontext)
(
PDEVICE_OBJECT DeviceObject = kontexte;

KdPrint (( "Interrupt.sys: Přeruąovací Service Rutinné \ n"));

/ * Mali by sme zistiť, či je od nás prerušiť a vrátiť * /

IoRequestDpc (DeviceObject,
DeviceObject-> CurrentIrp,
NULL);

return true;
)

Void InterruptDpcRoutine (IN PKDPC dpc, PDEVICE_OBJECT DeviceObject,
IN PIRP IRP,
IN PVOID Kontext)
(
PLOCAL_DEVICE_INFO DeviceExtension;
PIRP pIrp;

pIrp = DeviceObject-> CurrentIrp;
DeviceExtension = DeviceObject-> DeviceExtension;

KdPrint (( "Interrupt.sys: DPC Rutinné - Dobudovanie Přeruąovací Žiadosť \ n"));

/ * Do spracovania tu * /

návrate;
)

Void InterruptUnload (IN PDRIVER_OBJECT DriverObject)
(
WCHAR DOSNameBuffer [] = L "\ \ DosDevices \ \ Přeruąovací";
UNICODE_STRING uniDOSString;
PLOCAL_DEVICE_INFO extension = DriverObject-> DeviceObject-> DeviceExtension;

KdPrint (( "Interrupt.sys: Interrupt.sys je Vykladanie"));

/ * Zakázať paralelný port IRQ * /
outportb (kontrola, inportb (kontrola) & 0xEF);

/ * Odpojenie Přeruąovací * /
IoDisconnectInterrupt (rozšírenie-> InterruptObject);

/ * Zmazať symbolický odkaz * /
RtlInitUnicodeString (& uniDOSString, DOSNameBuffer);
IoDeleteSymbolicLink (& uniDOSString);

/ * Odstránenie zariadenia * /
IoDeleteDevice (DriverObject-> DeviceObject);
)

NTSTATUS DriverEntry (
V PDRIVER_OBJECT DriverObject,
V PUNICODE_STRING RegistryPath
)
(
PDEVICE_OBJECT DeviceObject;
NTSTATUS postavenie;
PLOCAL_DEVICE_INFO DeviceExtension;

ULONG MappedVector;
KIRQL IRQL;

WCHAR NameBuffer [] = L "\ \
Device \ \ Přeruąovací";
WCHAR DOSNameBuffer [] = L "\ \ DosDevices \ \ Přeruąovací";
UNICODE_STRING uniNameString, uniDOSString;

KdPrint (( "Interrupt.sys: Interrupt.sys Načítavam"));

RtlInitUnicodeString (& uniNameString, NameBuffer);
RtlInitUnicodeString (& uniDOSString, DOSNameBuffer);

status = IoCreateDevice (DriverObject, / / DriverObject
sizeof (LOCAL_DEVICE_INFO), / / DeviceExtensionSize
& UniNameString, / / DeviceName
FILE_DEVICE_UNKNOWN, / / DeviceType
0, / / DeviceCharacteristics
TRUE, / / Exkluzívne
& DeviceObject); / / * DeviceObject

if (! NT_SUCCESS (status))
return status;

DeviceExtension = DeviceObject-> DeviceExtension;

status = IoCreateSymbolicLink (& uniDOSString, & uniNameString);

if (! NT_SUCCESS (status))
return status;

DeviceExtension-> level = 7;
DeviceExtension-> Vektory = DeviceExtension-> Level;

MappedVector = HalGetInterruptVector (ISA,
0,
DeviceExtension-> Level,
DeviceExtension-> vektor,
& IRQL,
& DeviceExtension-> Affinity);

KdPrint (( "Interrupt.sys: MappedVector = 0x% 08X \ n", MappedVector));
KdPrint (( "Interrupt.sys: Level = 0x% 08X \ n", DeviceExtension-> Level));
KdPrint (( "Interrupt.sys: Vektorový = 0x% 08X \ n", DeviceExtension-> vektor));
KdPrint (( "Interrupt.sys: IRQL = 0x% 08X \ n", IRQL));
KdPrint (( "Interrupt.sys: Affinity = 0x% 08X \ n", DeviceExtension-> Affinity));

if (MappedVector == 0) DbgPrint ( "Interrupt.sys: HalGetInterruptVector zlyhal \ n");

IoInitializeDpcRequest (DeviceObject, InterruptDpcRoutine);

status = IoConnectInterrupt (& DeviceExtension-> InterruptObject, / / InterruptObject
InterruptIsr, / / ServiceRoutine
DeviceObject, / / ServiceContext
NULL, / / SpinLock
MappedVector, / / vektor
IRQL, / / IRQL
IRQL, / / SynchronizeIrql
Naklonený, / / InterruptMode
FALSE, / / ShareVector
DeviceExtension-> Affinity, / / ProcessorEnableMask
FALSE); / / FloatingSave

if (! NT_SUCCESS (status)) DbgPrint ( "Interrupt.sys: IoConnectInterrupt zlyhalo \ n");

/ * Umožniť paralelný port IRQ * /
outportb (kontrola, inportb (kontrola) | 0x10);

DriverObject-> MajorFunction [IRP_MJ_CREATE] = InterruptCreateDispatch;
DriverObject-> DriverUnload = InterruptUnload;

návrat STATUS_SUCCESS;
)

 

Welcome to EDABoard.com

Sponsor

Back
Top