这篇教程C++ DPRINT函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DPRINT函数的典型用法代码示例。如果您正苦于以下问题:C++ DPRINT函数的具体用法?C++ DPRINT怎么用?C++ DPRINT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DPRINT函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: IopDeviceStatusstatic NTSTATUSIopDeviceStatus(PPLUGPLAY_CONTROL_STATUS_DATA StatusData){ PDEVICE_OBJECT DeviceObject; PDEVICE_NODE DeviceNode; ULONG Operation = 0; ULONG DeviceStatus = 0; ULONG DeviceProblem = 0; UNICODE_STRING DeviceInstance; NTSTATUS Status; DPRINT("IopDeviceStatus() called/n"); Status = IopCaptureUnicodeString(&DeviceInstance, &StatusData->DeviceInstance); if (!NT_SUCCESS(Status)) { return Status; } DPRINT("Device name: '%wZ'/n", &DeviceInstance); _SEH2_TRY { Operation = StatusData->Operation; if (Operation == PNP_SET_DEVICE_STATUS) { DeviceStatus = StatusData->DeviceStatus; DeviceProblem = StatusData->DeviceProblem; } } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { if (DeviceInstance.Buffer != NULL) { ExFreePool(DeviceInstance.Buffer); } _SEH2_YIELD(return _SEH2_GetExceptionCode()); } _SEH2_END; /* Get the device object */ DeviceObject = IopGetDeviceObjectFromDeviceInstance(&DeviceInstance); if (DeviceInstance.Buffer != NULL) { ExFreePool(DeviceInstance.Buffer); } if (DeviceObject == NULL) { return STATUS_NO_SUCH_DEVICE; } DeviceNode = IopGetDeviceNode(DeviceObject); switch (Operation) { case PNP_GET_DEVICE_STATUS: DPRINT("Get status data/n"); DeviceStatus = IopGetDeviceNodeStatus(DeviceNode); DeviceProblem = DeviceNode->Problem; break; case PNP_SET_DEVICE_STATUS: DPRINT1("Set status data is NOT SUPPORTED/n"); break; case PNP_CLEAR_DEVICE_STATUS: DPRINT1("FIXME: Clear status data!/n"); break; } ObDereferenceObject(DeviceObject); if (Operation == PNP_GET_DEVICE_STATUS) { _SEH2_TRY { StatusData->DeviceStatus = DeviceStatus; StatusData->DeviceProblem = DeviceProblem; } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Status = _SEH2_GetExceptionCode(); } _SEH2_END; }
开发者ID:GYGit,项目名称:reactos,代码行数:85,
示例2: InitDevicestatic NTSTATUS InitDevice( IN PUNICODE_STRING RegistryPath, IN PVOID Context){// PDEVICE_INSTANCE Instance = Context; PDEVICE_OBJECT DeviceObject; // = Context; PDEVICE_EXTENSION Parameters; // = DeviceObject->DeviceExtension; UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"//Device//MidiOut0"); UNICODE_STRING SymlinkName = RTL_CONSTANT_STRING(L"//??//MidiOut0");// CONFIG Config; RTL_QUERY_REGISTRY_TABLE Table[2]; NTSTATUS s; // This is TEMPORARY, to ensure that we don't process more than 1 device. // I'll remove this limitation in the future. if (DeviceCount > 0) { DPRINT("Sorry - only 1 device supported by MPU401 driver at present :(/n"); return STATUS_NOT_IMPLEMENTED; } DPRINT("Creating IO device/n"); s = IoCreateDevice(Context, // driverobject sizeof(DEVICE_EXTENSION), &DeviceName, FILE_DEVICE_SOUND, // Correct? 0, FALSE, &DeviceObject); if (!NT_SUCCESS(s)) return s; DPRINT("Device Extension at 0x%x/n", DeviceObject->DeviceExtension); Parameters = DeviceObject->DeviceExtension; DPRINT("Creating DOS link/n"); /* Create the dos device link */ IoCreateSymbolicLink(&SymlinkName, &DeviceName); DPRINT("Initializing device/n");// DPRINT("Allocating memory for parameters structure/n"); // Bodged:// Parameters = (PDEVICE_EXTENSION)ExAllocatePool(NonPagedPool, sizeof(DEVICE_EXTENSION));// DeviceObject->DeviceExtension = Parameters;// Parameters = Instance->DriverObject->DriverExtension; DPRINT("DeviceObject at 0x%x, DeviceExtension at 0x%x/n", DeviceObject, Parameters); if (! Parameters) { DPRINT("NULL POINTER!/n"); return STATUS_INSUFFICIENT_RESOURCES; }// Instance->DriverObject->DriverExtension = Parameters; DPRINT("Setting reg path/n"); Parameters->RegistryPath = RegistryPath;// Parameters->DriverObject = Instance->DriverObject; DPRINT("Zeroing table memory and setting query routine/n"); RtlZeroMemory(Table, sizeof(Table)); Table[0].QueryRoutine = LoadSettings; DPRINT("Setting port and IRQ defaults/n"); Parameters->Port = DEFAULT_PORT; Parameters->IRQ = DEFAULT_IRQ;// Only to be enabled once we can get support for multiple cards working :)/* DPRINT("Loading settings from: %S/n", RegistryPath); s = RtlQueryRegistryValues(RTL_REGISTRY_ABSOLUTE, RegistryPath, Table, &Parameters, NULL);*/ if (! NT_SUCCESS(s)) return s; DPRINT("Port 0x%x IRQ %d/n", Parameters->Port, Parameters->IRQ);// Instance->P // Enter UART mode (should be done in init phase if (! InitUARTMode(Parameters->Port)) { DPRINT("UART mode initialization FAILED!/n"); // Set state indication somehow // Failure - what error code do we give?! // return STATUS_???? } DeviceCount ++; return STATUS_SUCCESS;//.........这里部分代码省略.........
开发者ID:hoangduit,项目名称:reactos,代码行数:101,
示例3: BBGetBuildNO/// <summary>/// Get kernel build number/// </summary>/// <param name="pBuildNO">Build number.</param>/// <returns>Status code</returns>NTSTATUS BBGetBuildNO( OUT PULONG pBuildNo ){ ASSERT( pBuildNo != NULL ); if (pBuildNo == 0) return STATUS_INVALID_PARAMETER; NTSTATUS status = STATUS_SUCCESS; UNICODE_STRING strRegKey = { 0 }; UNICODE_STRING strRegValue = { 0 }; UNICODE_STRING strVerVal = { 0 }; HANDLE hKey = NULL; OBJECT_ATTRIBUTES keyAttr = { 0 }; RtlUnicodeStringInit( &strRegKey, L"//Registry//Machine//Software//Microsoft//Windows NT//CurrentVersion" ); RtlUnicodeStringInit( &strRegValue, L"BuildLabEx" ); InitializeObjectAttributes( &keyAttr, &strRegKey, OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE, NULL, NULL ); status = ZwOpenKey( &hKey, KEY_READ, &keyAttr ); if (NT_SUCCESS( status )) { PKEY_VALUE_FULL_INFORMATION pValueInfo = ExAllocatePoolWithTag( PagedPool, 0x1000, BB_POOL_TAG ); ULONG bytes = 0; if (pValueInfo) { status = ZwQueryValueKey( hKey, &strRegValue, KeyValueFullInformation, pValueInfo, 0x1000, &bytes ); if (NT_SUCCESS( status )) { PWCHAR pData = (PWCHAR)((PUCHAR)pValueInfo->Name + pValueInfo->NameLength); for (ULONG i = 0; i < pValueInfo->DataLength; i++) { if (pData[i] == L'.') { for (ULONG j = i + 1; j < pValueInfo->DataLength; j++) { if (pData[j] == L'.') { strVerVal.Buffer = &pData[i] + 1; strVerVal.Length = strVerVal.MaximumLength = (USHORT)((j - i) * sizeof( WCHAR )); status = RtlUnicodeStringToInteger( &strVerVal, 10, pBuildNo ); goto skip1; } } } } skip1:; } ExFreePoolWithTag( pValueInfo, BB_POOL_TAG ); } else status = STATUS_NO_MEMORY; ZwClose( hKey ); } else DPRINT( "BlackBone: %s: ZwOpenKey failed with status 0x%X/n", __FUNCTION__, status ); return status;}
开发者ID:Retord,项目名称:Blackbone,代码行数:68,
示例4: iprop_get_updates_1kdb_incr_result_t *iprop_get_updates_1(kdb_last_t *arg, struct svc_req *rqstp){ static kdb_incr_result_t ret; char *whoami = "iprop_get_updates_1"; int kret; kadm5_server_handle_t handle = global_server_handle; char *client_name = NULL, *service_name = NULL; gss_name_t name = NULL; OM_uint32 min_stat; char obuf[256] = {0}; /* default return code */ ret.ret = UPDATE_ERROR; DPRINT(("%s: start, last_sno=%u/n", whoami, (ulong_t)arg->last_sno)); if (!handle) { krb5_klog_syslog(LOG_ERR, gettext("%s: server handle is NULL"), whoami); goto out; } if (setup_gss_names(rqstp, &client_name, &service_name) < 0) { krb5_klog_syslog(LOG_ERR, gettext("%s: setup_gss_names failed"), whoami); goto out; } DPRINT(("%s: clprinc=`%s'/n/tsvcprinc=`%s'/n", whoami, client_name, service_name)); if (!(name = get_clnt_name(rqstp))) { krb5_klog_syslog(LOG_ERR, gettext("%s: Couldn't obtain client's name"), whoami); goto out; } if (!kadm5int_acl_check(handle->context, name, ACL_IPROP, NULL, NULL)) { ret.ret = UPDATE_PERM_DENIED; audit_kadmind_unauth(rqstp->rq_xprt, l_port, whoami, "<null>", client_name); krb5_klog_syslog(LOG_NOTICE, LOG_UNAUTH, whoami, "<null>", client_name, service_name, client_addr(rqstp, abuf)); goto out; } kret = ulog_get_entries(handle->context, *arg, &ret); if (ret.ret == UPDATE_OK) { (void) snprintf(obuf, sizeof (obuf), gettext("%s; Incoming SerialNo=%u; Outgoing SerialNo=%u"), replystr(ret.ret), (ulong_t)arg->last_sno, (ulong_t)ret.lastentry.last_sno); } else { (void) snprintf(obuf, sizeof (obuf), gettext("%s; Incoming SerialNo=%u; Outgoing SerialNo=N/A"), replystr(ret.ret), (ulong_t)arg->last_sno); } audit_kadmind_auth(rqstp->rq_xprt, l_port, whoami, obuf, client_name, kret); krb5_klog_syslog(LOG_NOTICE, LOG_DONE, whoami, obuf, ((kret == 0) ? "success" : error_message(kret)), client_name, service_name, client_addr(rqstp, abuf));out: if (nofork) debprret(whoami, ret.ret, ret.lastentry.last_sno); if (client_name) free(client_name); if (service_name) free(service_name); if (name) gss_release_name(&min_stat, &name); return (&ret);}
开发者ID:AlainODea,项目名称:illumos-gate,代码行数:92,
示例5: HalpGetPCIDataULONGNTAPIHalpGetPCIData(IN PBUS_HANDLER BusHandler, IN PBUS_HANDLER RootHandler, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length){ UCHAR PciBuffer[PCI_COMMON_HDR_LENGTH]; PPCI_COMMON_CONFIG PciConfig = (PPCI_COMMON_CONFIG)PciBuffer; ULONG Len = 0;#ifdef SARCH_XBOX /* Trying to get PCI config data from devices 0:0:1 and 0:0:2 will completely * hang the Xbox. Also, the device number doesn't seem to be decoded for the * video card, so it appears to be present on 1:0:0 - 1:31:0. * We hack around these problems by indicating "device not present" for devices * 0:0:1, 0:0:2, 1:1:0, 1:2:0, 1:3:0, ...., 1:31:0 */ if ((0 == BusHandler->BusNumber && 0 == Slot.u.bits.DeviceNumber && (1 == Slot.u.bits.FunctionNumber || 2 == Slot.u.bits.FunctionNumber)) || (1 == BusHandler->BusNumber && 0 != Slot.u.bits.DeviceNumber)) { DPRINT("Blacklisted PCI slot/n"); if (0 == Offset && sizeof(USHORT) <= Length) { *(PUSHORT)Buffer = PCI_INVALID_VENDORID; return sizeof(USHORT); } return 0; }#endif /* Normalize the length */ if (Length > sizeof(PCI_COMMON_CONFIG)) Length = sizeof(PCI_COMMON_CONFIG); /* Check if this is a vendor-specific read */ if (Offset >= PCI_COMMON_HDR_LENGTH) { /* Read the header */ HalpReadPCIConfig(BusHandler, Slot, PciConfig, 0, sizeof(ULONG)); /* Make sure the vendor is valid */ if (PciConfig->VendorID == PCI_INVALID_VENDORID) return 0; } else { /* Read the entire header */ Len = PCI_COMMON_HDR_LENGTH; HalpReadPCIConfig(BusHandler, Slot, PciConfig, 0, Len); /* Validate the vendor ID */ if (PciConfig->VendorID == PCI_INVALID_VENDORID) { /* It's invalid, but we want to return this much */ Len = sizeof(USHORT); } /* Now check if there's space left */ if (Len < Offset) return 0; /* There is, so return what's after the offset and normalize */ Len -= Offset; if (Len > Length) Len = Length; /* Copy the data into the caller's buffer */ RtlMoveMemory(Buffer, PciBuffer + Offset, Len); /* Update buffer and offset, decrement total length */ Offset += Len; Buffer = (PVOID)((ULONG_PTR)Buffer + Len); Length -= Len; } /* Now we still have something to copy */ if (Length) { /* Check if it's vendor-specific data */ if (Offset >= PCI_COMMON_HDR_LENGTH) { /* Read it now */ HalpReadPCIConfig(BusHandler, Slot, Buffer, Offset, Length); Len += Length; } } /* Update the total length read */ return Len;}
开发者ID:RareHare,项目名称:reactos,代码行数:89,
示例6: write_xmms_configvoid write_xmms_config() { /*char tempname[100];*/ char *tempname = (char *)malloc(sizeof(char)*100); int count; GSList *position = cdcover_config.cover_searchpaths; GSList *positionext = cdcover_config.cover_extensions; mcs_handle_t *config; DPRINT (__DEBUG_GENERAL__,"Writing config"); config = aud_cfg_db_open (); if (config) { // Window position aud_cfg_db_set_bool (config,PLUGIN_NAME,"savewindowpos",cdcover_config.save_window_pos); aud_cfg_db_set_int (config,PLUGIN_NAME,"windowposx",cdcover_config.winpos_x); aud_cfg_db_set_int (config,PLUGIN_NAME,"windowposy",cdcover_config.winpos_y); // Aspect ratio aud_cfg_db_set_bool (config,PLUGIN_NAME,"aspectratio",cdcover_config.preserve_aspectratio); // Iterate through the search list and save the paths count=0; while (position!=NULL) { count++; sprintf (tempname,"path%d",count); aud_cfg_db_set_string (config,PLUGIN_NAME,tempname,position->data); //printf("Wrote path %s (%d, %s)/n", (char *)position->data, count, tempname); position = g_slist_next (position); } //printf("Done writing paths/n"); // Delete the next key, so there's a hole and read_xmms_config can stop here // Not too nice, as we probably leave garbage in the xmms config file sprintf (tempname,"path%d",count+1); aud_cfg_db_unset_key (config,PLUGIN_NAME,tempname); // Iterate through the search list and save the extensions count=0; //printf("About to write extensions/n"); while (positionext!=NULL) { count++; sprintf (tempname,"ext%d",count); aud_cfg_db_set_string (config,PLUGIN_NAME,tempname,positionext->data); //printf("Wrote extension %s (%d, %s)/n", (char *)positionext->data, count, tempname); positionext = g_slist_next (positionext); } //printf("Done with the extensions too/n"); // Delete the next key, so there's a hole and read_xmms_config can stop here // Not too nice, as we probably leave garbage in the xmms config file sprintf (tempname,"ext%d",count+1); aud_cfg_db_unset_key (config,PLUGIN_NAME,tempname); // Save the skin if (cdcover_config.skin_path!=NULL) { // Save the user selected skin aud_cfg_db_set_string (config,PLUGIN_NAME,"skinpath",cdcover_config.skin_path); } else { // Built in default skin, delete the key aud_cfg_db_unset_key (config,PLUGIN_NAME,"skinpath"); } // Write and then free the config //printf("About to close config file/n"); aud_cfg_db_close (config); //printf("Closed config file/n"); } else { DPRINT (__DEBUG_GENERAL__,"cannot open config file for writing"); }}
开发者ID:apocalyptech,项目名称:audacious-cdcover,代码行数:70,
示例7: pv_updatedp_result_t pv_update(pv_t *pv, dpid_t owner){ size_t len, hdrlen; pv_peer_t *peer; assoctab_item_t *pe; pv_var_t *pvar; dp_result_t err; playerHdl_t errHdl; time_t interval; int i, j; char buf[dpio_MAXLEN_RELIABLE]; if (!pv) { DPRINT(("pv_update: pv null/n")); return dp_RES_BUG; } /* Wait 'til previous transmission has had time to get sent. */ if ((long)(pv->dp->now - pv->next_send) < 0) return dp_RES_OK; /* Set default next-check-time if no transmission this time. */ pv->next_send = pv->dp->now + pv->dp->clocksPerSec / 8; /* To propagate the given id's variables, need to get access to them */ peer = (pv_peer_t *)assoctab_subscript(pv->peers, owner); if (!peer) { /*DPRINT(("pv_update: no variables for player %d/n", owner)); */ return dp_RES_OK; } /*DPRINT(("pv_update: peer->dirty is %d for player %d/n", peer->dirty, owner));*/ /* If it's time to start a new cycle, do it. */ if (pv->cur_key_index == -1) { if (pv->new_ndests > 0) { /* New hosts have been added since last cycle. */ /* Start a host update cycle. */ /* Copy new host list. */ pv->cur_ndests = pv->new_ndests; memcpy(pv->cur_dests, pv->new_dests, pv->new_ndests * sizeof(pv->new_dests[0])); /* Reset new host list. */ pv->new_ndests = 0; /* Fill key list with all public keys for this player. */ for (i=j=0; i<peer->vars->n_used && j<dp_PLAYERDATA_NKEYS_MAX; i++) { pe = assoctab_getkey(peer->vars, i); if (!pe) break; /* horrible error */ pvar = (pv_var_t *) &pe->value; if (!(pvar->flags & dp_PLAYERDATA_FLAG_NOFLOOD)) { pv->cur_keys[j++] = pe->key; } } /* Early exit if no public variables. */ if (j == 0) return dp_RES_OK; pv->cur_nkeys = j; DPRINT(("pv_update: starting new host update cycle. nkeys %d, ndests %d/n", pv->cur_nkeys, pv->cur_ndests)); /* Trigger start. */ pv->cur_key_index = 0; pv->cur_offset = 0; } else if (peer->dirty > 0) { /* Varible values have changed since last cycle. */ /* Start a variable update cycle. */ peer->dirty = FALSE; DPRINT(("pv_update: Clearing peer->dirty for player %d/n", owner)); /* Set host list to 'all other hosts in game'. */ pv->cur_ndests = dp_getBroadcastHdls(pv->dp, pv->cur_dests); /* Fill key list with all dirty variables. Mark them clean. */ for (i=j=0; i<peer->vars->n_used && j<dp_PLAYERDATA_NKEYS_MAX; i++) { pe = assoctab_getkey(peer->vars, i); if (!pe) break; /* horrible error */ pvar = (pv_var_t *) &pe->value; if ((pvar->flags & dp_PLAYERDATA_FLAG_DIRTY) && !(pvar->flags & dp_PLAYERDATA_FLAG_NOFLOOD)) { pv->cur_keys[j++] = pe->key; pvar->flags &= ~dp_PLAYERDATA_FLAG_DIRTY; } } /* Early exit if no other hosts in game (after clearing dirty!). */ if (pv->cur_ndests <= 0) return dp_RES_OK; /* Early exit if no dirty public variables. */ if (j == 0) return dp_RES_OK; pv->cur_nkeys = j; DPRINT(("pv_update: starting new variable update cycle. nkeys %d, ndests %d/n", pv->cur_nkeys, pv->cur_ndests)); /* Trigger start. */ pv->cur_key_index = 0; pv->cur_offset = 0; } } /* Are we in the middle of an update? */ if (pv->cur_key_index == -1) return dp_RES_OK; /* No. */ /* Get a pointer to the variable we're working on. Make sure it's * still there, still clean, and still needs data transferred. */ do { pvar = (pv_var_t *)assoctab_subscript(peer->vars, pv->cur_keys[pv->cur_key_index]); /* Has it been deleted or changed or finished? */ if (!pvar//.........这里部分代码省略.........
开发者ID:jleclanche,项目名称:darkdust-ctp2,代码行数:101,
示例8: ProcessPlayingNotesDWORD WINAPIProcessPlayingNotes( LPVOID parameter){ DeviceInfo* device_info = (DeviceInfo*) parameter; NTSTATUS status; IO_STATUS_BLOCK io_status_block; DWORD arp_notes; DPRINT("Note processing started/n"); /* We lock the note list only while accessing it */#ifdef CONTINUOUS_NOTES while ( WaitForSingleObject(the_device->work_available, INFINITE), !device_info->terminate_thread )#endif { NoteNode* node; /* Number of notes being arpeggiated */ arp_notes = 1; EnterCriticalSection(&device_lock); /* Calculate how much time to allocate to each playing note */ DPRINT("%d notes active/n", (int) device_info->playing_notes_count); node = device_info->note_list; while ( ( node != NULL ) && ( arp_notes <= POLYPHONY ) ) { BEEP_SET_PARAMETERS beep_data; DWORD actually_playing = 0; double frequency = node->note; DPRINT("playing../n"); frequency = frequency / 12; frequency = pow(2, frequency); frequency = 8.1758 * frequency; if (device_info->playing_notes_count > POLYPHONY) actually_playing = POLYPHONY; else actually_playing = device_info->playing_notes_count; DPRINT("Frequency %f/n", frequency); // TODO beep_data.Frequency = (DWORD) frequency; beep_data.Duration = TIMESLICE_SIZE / actually_playing; /* device_info->playing_notes_count; */ status = NtDeviceIoControlFile(device_info->kernel_device, NULL, NULL, NULL, &io_status_block, IOCTL_BEEP_SET, &beep_data, sizeof(BEEP_SET_PARAMETERS), NULL, 0); if ( ! NT_SUCCESS(status) ) { DPRINT("ERROR %d/n", (int) GetLastError()); } SleepEx(beep_data.Duration, TRUE); if ( device_info->refresh_notes ) { device_info->refresh_notes = FALSE; break; } arp_notes ++; node = node->next; } LeaveCriticalSection(&device_lock); } return 0;}
开发者ID:Moteesh,项目名称:reactos,代码行数:87,
示例9: OpenDeviceMMRESULTOpenDevice( DeviceInfo** private_data, MIDIOPENDESC* open_desc, DWORD flags){ NTSTATUS status; HANDLE heap; HANDLE kernel_device; UNICODE_STRING beep_device_name; OBJECT_ATTRIBUTES attribs; IO_STATUS_BLOCK status_block; /* One at a time.. */ if ( the_device ) { DPRINT("Already allocated/n"); return MMSYSERR_ALLOCATED; } /* Make the device name into a unicode string and open it */ RtlInitUnicodeString(&beep_device_name, L"//Device//Beep"); InitializeObjectAttributes(&attribs, &beep_device_name, 0, NULL, NULL); status = NtCreateFile(&kernel_device, FILE_READ_DATA | FILE_WRITE_DATA, &attribs, &status_block, NULL, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN_IF, 0, NULL, 0); if ( ! NT_SUCCESS(status) ) { DPRINT("Could not connect to BEEP device - %d/n", (int) GetLastError()); return MMSYSERR_ERROR; } DPRINT("Opened!/n"); /* Allocate and initialize the device info */ heap = GetProcessHeap(); the_device = HeapAlloc(heap, HEAP_ZERO_MEMORY, sizeof(DeviceInfo)); if ( ! the_device ) { DPRINT("Out of memory/n"); return MMSYSERR_NOMEM; } /* Initialize */ the_device->kernel_device = kernel_device; the_device->playing_notes_count = 0; the_device->note_list = NULL; the_device->thread_handle = 0; the_device->terminate_thread = FALSE; the_device->running_status = 0; // TODO the_device->mme_handle = (HDRVR) open_desc->hMidi; the_device->callback = open_desc->dwCallback; the_device->instance = open_desc->dwInstance; the_device->flags = flags; /* Store the pointer in the user data */ *private_data = the_device; /* This is threading-related code */#ifdef CONTINUOUS_NOTES the_device->work_available = CreateEvent(NULL, TRUE, FALSE, NULL); if ( ! the_device->work_available ) { DPRINT("CreateEvent failed/n"); HeapFree(heap, 0, the_device); return MMSYSERR_NOMEM; } the_device->thread_handle = CreateThread(NULL, 0, ProcessPlayingNotes, (PVOID) the_device, 0, NULL); if ( ! the_device->thread_handle ) {//.........这里部分代码省略.........
开发者ID:Moteesh,项目名称:reactos,代码行数:101,
示例10: MAVMissionOutput_40hzvoid MAVMissionOutput_40hz(void){#if (FLIGHT_PLAN_TYPE == FP_WAYPOINTS) // LOGO_WAYPOINTS cannot be uploaded / downloaded vect3_32t wp; if (mavlink_flags.mavlink_send_waypoint_reached == 1) { mavlink_flags.mavlink_send_waypoint_reached = 0; mavlink_msg_mission_item_reached_send(MAVLINK_COMM_0, mav_waypoint_reached); } if (mavlink_flags.mavlink_send_waypoint_changed == 1) { mavlink_flags.mavlink_send_waypoint_changed = 0; mavlink_msg_mission_current_send(MAVLINK_COMM_0, mav_waypoint_changed); }//static inline void mavlink_msg_mission_item_reached_send(mavlink_channel_t chan, uint16_t seq)//static inline void mavlink_msg_mission_current_send(mavlink_channel_t chan, uint16_t seq) // CHECK WHETHER WAYPOINT PROTOCOL HAS TIMED OUT WAITING ON A RESPONSE if (mavlink_waypoint_timeout <= 0) { if (mavlink_flags.mavlink_sending_waypoints || mavlink_flags.mavlink_receiving_waypoints) { //send_text((uint8_t *)"Timeout on waypoint protocol./r/n"); DPRINT("Timeout on waypoint protocol./r/n"); } mavlink_flags.mavlink_sending_waypoints = false; mavlink_flags.mavlink_receiving_waypoints = false; }// if (mavlink_flags.mavlink_receiving_waypoints == 1) if (mavlink_flags.mavlink_request_specific_waypoint == 1) { DPRINT("requesting waypoint: %u/r/n", waypoint_request_i); //mavlink_flags.waypoint_request_i = 0;//static inline void mavlink_msg_mission_request_send(mavlink_channel_t chan, uint8_t target_system, uint8_t target_component, uint16_t seq) mavlink_msg_mission_request_send(MAVLINK_COMM_0, mavlink_waypoint_dest_sysid, mavlink_waypoint_dest_compid, waypoint_request_i); mavlink_flags.mavlink_request_specific_waypoint = 0; } // SEND NUMBER OF WAYPOINTS IN WAYPOINTS LIST if (mavlink_flags.mavlink_send_waypoint_count == 1) { int16_t number_of_waypoints = waypoint_count(); //send_text((uint8_t *)"Sending waypoint count/r/n"); DPRINT("Sending waypoint count: %u/r/n", number_of_waypoints); mavlink_msg_mission_count_send(MAVLINK_COMM_0, mavlink_waypoint_dest_sysid, mavlink_waypoint_dest_compid, number_of_waypoints); mavlink_flags.mavlink_send_waypoint_count = 0; } // SEND DETAILS OF A SPECIFIC WAYPOINT if (mavlink_flags.mavlink_send_specific_waypoint == 1) { //send_text((uint8_t *)"Time to send a specific waypoint/r/n"); DPRINT("Time to send a specific waypoint: %u/r/n", mavlink_waypoint_requested_sequence_number);// mavlink_msg_mission_item_send(mavlink_channel_t chan, uint8_t target_system, uint8_t target_component, // uint16_t seq, uint8_t frame, uint16_t command, uint8_t current, uint8_t autocontinue, // float param1, float param2, float param3, float param4, // float x, float y, float z) //BUILDING //struct waypoint3D { int32_t x; int32_t y; int16_t z; };// struct waypoint3D getWaypoint3D(uint16_t wp);// struct waypoint3D wp;// wp = getWaypoint3D(mavlink_waypoint_requested_sequence_number); wp = getWaypoint3D(mavlink_waypoint_requested_sequence_number); //float lat_float, lon_float, alt_float = 0.0; //uint32_t accum_long = IMUlocationy._.W1 + (lat_origin.WW / 90); // meters North from Equator //lat_float = (float)((accum_long * 90) / 10000000.0); // degrees North from Equator //lon_float = (float)((float) lon_origin.WW + ((float)(IMUlocationx._.W1) * 90.0) / (float)(cos_lat / 16384.0)) / 10000000.0; //extern struct relWaypointDef wp_to_relative(struct waypointDef wp); //struct relWaypointDef current_waypoint = wp_to_relative(waypoints[waypointIndex]); //alt_float = ((float)(IMUlocationz._.W1)) + (float)(alt_origin.WW / 100.0); mavlink_msg_mission_item_send(MAVLINK_COMM_0, mavlink_waypoint_dest_sysid, mavlink_waypoint_dest_compid, / mavlink_waypoint_requested_sequence_number, mavlink_waypoint_frame, MAV_CMD_NAV_WAYPOINT, mavlink_waypoint_current, true, / 0.0, 0.0, 0.0, 0.0, / (float)wp.y / 10000000.0, (float)wp.x / 10000000.0, wp.z); DPRINT("waypoint %f %f %f/r/n", (double)wp.y / 10000000.0, (double)wp.x / 10000000.0, (double)wp.z); mavlink_flags.mavlink_send_specific_waypoint = 0; } if (mavlink_waypoint_timeout > 0) mavlink_waypoint_timeout--;#endif // (FLIGHT_PLAN_TYPE == FP_WAYPOINTS)/* // Acknowledge a command if flaged to do so. if (mavlink_send_command_ack == true) { mavlink_msg_command_ack_send(MAVLINK_COMM_0, mavlink_command_ack_command, mavlink_command_ack_result); mavlink_send_command_ack = false;//.........这里部分代码省略.........
开发者ID:kd0aij,项目名称:MatrixPilot,代码行数:101,
示例11: MissionRequeststatic inline void MissionRequest(mavlink_message_t* handle_msg){ mavlink_mission_request_t packet; //send_text((uint8_t*)"waypoint request/r/n"); //DPRINT("mission request/r/n"); // Check if in sending waypoint mode ... if (!mavlink_flags.mavlink_sending_waypoints) { DPRINT("mission request not valid, no longer sending/r/n"); return; } // decode mavlink_msg_mission_request_decode(handle_msg, &packet); if (mavlink_check_target(packet.target_system, packet.target_component)) return; mavlink_waypoint_timeout = MAVLINK_WAYPOINT_TIMEOUT; mavlink_waypoint_requested_sequence_number = packet.seq; DPRINT("mission request: packet.seq %u/r/n", packet.seq); mavlink_waypoint_frame = MAV_FRAME_GLOBAL; // reference frame if (mavlink_waypoint_requested_sequence_number == waypointIndex) { mavlink_waypoint_current = true; } else { mavlink_waypoint_current = false; } // send waypoint mavlink_flags.mavlink_send_specific_waypoint = 1; /************** Not converted to MAVLink wire protocol 1.0 yet *******************/ //uint8_t action = MAV_ACTION_NAVIGATE; // action //uint8_t orbit_direction = 0; // clockwise(0), counter-clockwise(1) //float orbit = 0; // loiter radius //float param1 = 0, param2 = 0; //switch(tell_command.id) //{ //case CMD_WAYPOINT: // navigate //action = MAV_ACTION_NAVIGATE; // action //break; // case CMD_LOITER_TIME: // loiter //orbit = get(PARAM_WP_RADIUS); // XXX setting loiter radius as waypoint acceptance radius //action = MAV_ACTION_LOITER; // action //param1 = get(PARAM_WP_RADIUS); //param2 = tell_command.p1*100; // loiter time //break; // case CMD_TAKEOFF: // takeoff //action = MAV_ACTION_TAKEOFF; //break; //case CMD_LAND: // land //action = MAV_ACTION_LAND; //break; //defaut: //gcs.send_text("command not handled"); //break; //} // time that the mav should loiter in milliseconds //uint8_t current = 0; // 1 (true), 0 (false) //if (packet.seq == get(PARAM_WP_INDEX)) current = 1; //float yaw_dir = 0; // yaw orientation in radians, 0 = north XXX: what does this do? //uint8_t autocontinue = 1; // 1 (true), 0 (false) //float x = tell_command.lng/1.0e7; // local (x), global (longitude) //float y = tell_command.lat/1.0e7; // local (y), global (latitude) //float z = tell_command.alt/1.0e2; // local (z), global (altitude) // note XXX: documented x,y,z order does not match with gps raw //mavlink_msg_waypoint_send(chan,handle_msg->sysid, //handle_msg->compid,packet.seq,frame,action, //orbit,orbit_direction,param1,param2,current,x,y,z,yaw_dir,autocontinue); // update last waypoint comm stamp //global_data.waypoint_timelast_send = millis();}
开发者ID:kd0aij,项目名称:MatrixPilot,代码行数:79,
示例12: MissionItemstatic inline void MissionItem(mavlink_message_t* handle_msg){ int16_t flags; struct waypoint3D wp; mavlink_mission_item_t packet; //send_text((uint8_t*)"waypoint/r/n");// DPRINT("mission item/r/n"); // Check if receiving waypoint if (!mavlink_flags.mavlink_receiving_waypoints) return; // decode mavlink_msg_mission_item_decode(handle_msg, &packet); if (mavlink_check_target(packet.target_system, packet.target_component)) return; DPRINT("mission item: %u/r/n", packet.seq); // check if this is the requested waypoint if (packet.seq != waypoint_request_i) return; // store waypoint //uint8_t loadAction = 0; // 0 insert in list, 1 exec now switch (packet.frame) { case MAV_FRAME_GLOBAL: {// DPRINT("FRAME_GLOBAL/r/n");//struct waypoint3D { int32_t x; int32_t y; int16_t z; };//struct waypointDef { struct waypoint3D loc; int16_t flags; struct waypoint3D viewpoint; };// DPRINT("packet.x %f packet.y %f packet.z %f/r/n", packet.x, packet.y, packet.z); //tell_command.lng = 1.0e7*packet.x; //tell_command.lat = 1.0e7*packet.y; //tell_command.alt = packet.z*1.0e2; // MatrixPilot uses X & Y in reverse to QGC wp.x = packet.y * 1.0e7; wp.y = packet.x * 1.0e7; wp.z = packet.z; flags = F_ABSOLUTE; break; } case MAV_FRAME_LOCAL_NED: // local (relative to home position) { DPRINT("FRAME_LOCAL - not implemented/r/n"); //tell_command.lng = 1.0e7*ToDeg(packet.x/ //(radius_of_earth*cos(ToRad(home.lat/1.0e7)))) + home.lng; //tell_command.lat = 1.0e7*ToDeg(packet.y/radius_of_earth) + home.lat; //tell_command.alt = -packet.z*1.0e2 + home.alt; break; } } // defaults //tell_command.id = CMD_BLANK;// Currently F can be set to: F_NORMAL, or any combination of:// F_ABSOLUTE - Waypoints are Relative by default, unless F_ABSOLUTE is specified.// // F_TAKEOFF - More quickly gain altitude at takeoff.// F_INVERTED - Navigate to this waypoint with the plane upside down. (only if STABILIZE_INVERTED_FLIGHT is set to 1 in options.h)// F_HOVER - Hover the plane until reaching this waypoint. (only if STABILIZE_HOVER is set to 1 in options.h)// NOTE: while hovering, no navigation is performed, and throttle is under manual control.// F_LOITER - After reaching this waypoint, continue navigating towards this same waypoint. Repeat until leaving waypoint mode.// F_TRIGGER - Trigger an action to happen when this waypoint leg starts. (See the Trigger Action section of the options.h file.) // F_ALTITUDE_GOAL - Climb or descend to the given altitude, then continue to the next waypoint.// F_CROSS_TRACK - Navigate using cross-tracking. Best used for longer waypoint legs.// F_LAND - Navigate towards this waypoint with the throttle off. switch (packet.command) { case MAV_CMD_NAV_TAKEOFF: DPRINT("NAV_TAKEOFF/r/n"); //tell_command.id = CMD_TAKEOFF; flags |= F_TAKEOFF; break; case MAV_CMD_NAV_LAND: DPRINT("NAV_LAND/r/n"); //tell_command.id = CMD_LAND; flags |= F_LAND; break; case MAV_CMD_NAV_WAYPOINT:// DPRINT("NAV_WAYPOINT/r/n"); //tell_command.id = CMD_WAYPOINT; break; case MAV_CMD_NAV_LOITER_UNLIM:// DPRINT("NAV_LOITER/r/n"); //tell_command.id = CMD_LOITER_TIME; //tell_command.p1 = packet.param2/1.0e2; break; } // save waypoint add_waypoint(wp, flags); //set_wp_with_index(tell_command, packet.seq); // update waypoint receiving state machine //global_data.waypoint_timelast_receive = millis(); mavlink_waypoint_timeout = MAVLINK_WAYPOINT_TIMEOUT;//.........这里部分代码省略.........
开发者ID:kd0aij,项目名称:MatrixPilot,代码行数:101,
示例13: VfatShutdownNTSTATUS NTAPIVfatShutdown(PDEVICE_OBJECT DeviceObject, PIRP Irp){ NTSTATUS Status; PLIST_ENTRY ListEntry; PDEVICE_EXTENSION DeviceExt; ULONG eocMark; DPRINT("VfatShutdown(DeviceObject %p, Irp %p)/n",DeviceObject, Irp); FsRtlEnterFileSystem(); /* FIXME: block new mount requests */ if (DeviceObject == VfatGlobalData->DeviceObject) { Irp->IoStatus.Status = STATUS_SUCCESS; ExAcquireResourceExclusiveLite(&VfatGlobalData->VolumeListLock, TRUE); ListEntry = VfatGlobalData->VolumeListHead.Flink; while (ListEntry != &VfatGlobalData->VolumeListHead) { DeviceExt = CONTAINING_RECORD(ListEntry, VCB, VolumeListEntry); ListEntry = ListEntry->Flink; ExAcquireResourceExclusiveLite(&DeviceExt->DirResource, TRUE); if (DeviceExt->VolumeFcb->Flags & VCB_CLEAR_DIRTY) { /* set clean shutdown bit */ Status = GetNextCluster(DeviceExt, 1, &eocMark); if (NT_SUCCESS(Status)) { eocMark |= DeviceExt->CleanShutBitMask; if (NT_SUCCESS(WriteCluster(DeviceExt, 1, eocMark))) DeviceExt->VolumeFcb->Flags &= ~VCB_IS_DIRTY; } } Status = VfatFlushVolume(DeviceExt, DeviceExt->VolumeFcb); if (NT_SUCCESS(Status)) { Status = VfatDiskShutDown(DeviceExt); if (!NT_SUCCESS(Status)) DPRINT1("VfatDiskShutDown failed, status = %x/n", Status); } else { DPRINT1("VfatFlushVolume failed, status = %x/n", Status); } ExReleaseResourceLite(&DeviceExt->DirResource); /* FIXME: Unmount the logical volume */ if (!NT_SUCCESS(Status)) Irp->IoStatus.Status = Status; } ExReleaseResourceLite(&VfatGlobalData->VolumeListLock); /* FIXME: Free all global acquired resources */ Status = Irp->IoStatus.Status; } else { Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST; Status = STATUS_INVALID_DEVICE_REQUEST; } Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); FsRtlExitFileSystem(); return(Status);}
开发者ID:RareHare,项目名称:reactos,代码行数:73,
示例14: GGI_vgl_setmodeint GGI_vgl_setmode(ggi_visual *vis, ggi_mode *tm){ struct vgl_priv *priv = VGL_PRIV(vis); ggi_graphtype gt = tm->graphtype; video_info_t modeinfo; unsigned long modenum = 0; char sugname[GGI_MAX_APILEN]; char args[GGI_MAX_APILEN]; int err = 0; int id, i; int pixelBytes; err = GGI_vgl_checkmode(vis, tm); if (err) return err; /* reset the modeinfo structure as expected by query_mode */ memset(&modeinfo, 0, sizeof(modeinfo)); switch(gt) { case GT_1BIT : modeinfo.vi_depth = 1; pixelBytes = 1; break; case GT_4BIT : modeinfo.vi_depth = 4; pixelBytes = 1; break; case GT_8BIT : modeinfo.vi_depth = 8; pixelBytes = 1; break; case GT_16BIT: modeinfo.vi_depth = 16; pixelBytes = 2; break; case GT_32BIT: modeinfo.vi_depth = 32; pixelBytes = 4; break; /* Unsupported mode depths */ case GT_15BIT: case GT_24BIT: default: return GGI_ENOMATCH; } modeinfo.vi_width = tm->visible.x; modeinfo.vi_height = tm->visible.y; /* XXX should be added to libvgl */ if (ioctl(0, FBIO_FINDMODE, &modeinfo)) return -1; DPRINT("Setting VGLlib mode %d (0x%x)/n", modeinfo.vi_mode, modeinfo.vi_mode); /* Terminate any current mode before initialising another */ if (priv->vgl_init_done) { priv->vgl_init_done = 0; VGLEnd(); } /* XXX should be in VGL */ if ((modeinfo.vi_mode >= M_B40x25) && (modeinfo.vi_mode <= M_VGA_M90x60)) modenum = _IO('S', modeinfo.vi_mode); if ((modeinfo.vi_mode >= M_TEXT_80x25) && (modeinfo.vi_mode <= M_TEXT_132x60)) modenum = _IO('S', modeinfo.vi_mode); if ((modeinfo.vi_mode >= M_VESA_CG640x400) && (modeinfo.vi_mode <= M_VESA_FULL_1280)) modenum = _IO('V', modeinfo.vi_mode - M_VESA_BASE); if ((err = VGLInit(modenum)) != 0) { DPRINT("display-vgl: setting mode 0x%x failed with error %d/n", modeinfo.vi_mode, err); return GGI_EFATAL; } priv->vgl_init_done = 1; if (priv->vgl_use_db) { _GGI_vgl_freedbs(vis); /* Set up DirectBuffer(s) */ for (i = 0; i<tm->frames; i++) { if (LIBGGI_FB_SIZE(tm) > (unsigned)(VGLDisplay->Xsize*VGLDisplay->Ysize* pixelBytes)) { fprintf(stderr, "display-vgl: framebuffer too large! (%d > %d*%d*%d)/n", LIBGGI_FB_SIZE(tm), VGLDisplay->Xsize, VGLDisplay->Ysize, pixelBytes); return GGI_ENOMEM; } _ggi_db_add_buffer(LIBGGI_APPLIST(vis), _ggi_db_get_new()); LIBGGI_APPBUFS(vis)[i]->frame = i; LIBGGI_APPBUFS(vis)[i]->type = GGI_DB_NORMAL | GGI_DB_SIMPLE_PLB; LIBGGI_APPBUFS(vis)[i]->read = VGLDisplay->Bitmap; LIBGGI_APPBUFS(vis)[i]->write = VGLDisplay->Bitmap; LIBGGI_APPBUFS(vis)[i]->layout = blPixelLinearBuffer; LIBGGI_APPBUFS(vis)[i]->buffer.plb.stride = GT_ByPPP(tm->virt.x, tm->graphtype); } } /* Save mode info returned by the VESA driver */ bcopy(&modeinfo, &priv->modeinfo, sizeof(priv->modeinfo)); /* Palette */ if (vis->palette) { free(vis->palette); vis->palette = NULL; }//.........这里部分代码省略.........
开发者ID:Nekrofage,项目名称:DoomRPi,代码行数:101,
示例15: PlayNoteMMRESULTPlayNote( DeviceInfo* device_info, UCHAR note, UCHAR velocity){ HANDLE heap = GetProcessHeap(); NoteNode* node; DPRINT("PlayNote/n"); if ( velocity == 0 ) { DPRINT("Zero velocity/n"); /* Velocity zero is effectively a "note off" */ StopNote(device_info, note); } else { /* Start playing the note */ NoteNode* new_node; EnterCriticalSection(&device_lock); node = device_info->note_list; while ( node != NULL ) {#ifndef ALLOW_DUPLICATE_NOTES if ( ( node->note == note ) && ( velocity > 0 ) ) { /* The note is already playing - do nothing */ DPRINT("Duplicate note playback request ignored/n"); LeaveCriticalSection(&device_lock); return MMSYSERR_NOERROR; }#endif node = node->next; } new_node = HeapAlloc(heap, HEAP_ZERO_MEMORY, sizeof(NoteNode)); if ( ! new_node ) { LeaveCriticalSection(&device_lock); return MMSYSERR_NOMEM; } new_node->note = note; new_node->velocity = velocity; /* Prepend to the playing notes list. If exceeding polyphony, remove the oldest note (which will be at the tail.) */ if ( device_info->note_list ) device_info->note_list->previous = new_node; new_node->next = device_info->note_list; new_node->previous = NULL; device_info->note_list = new_node; device_info->playing_notes_count ++;/* if ( device_info->playing_notes_count > POLYPHONY ) { ASSERT(tail_node); DPRINT("Polyphony exceeded/n"); tail_node->previous->next = NULL; HeapFree(heap, 0, tail_node); device_info->playing_notes_count --; }*/#ifdef CONTINUOUS_NOTES SetEvent(device_info->work_available);#endif LeaveCriticalSection(&device_lock); DPRINT("Note started - now playing %d notes/n", (int) device_info->playing_notes_count); device_info->refresh_notes = TRUE; }#ifndef CONTINUOUS_NOTES ProcessPlayingNotes((PVOID) device_info);#endif return MMSYSERR_NOERROR;}
开发者ID:Moteesh,项目名称:reactos,代码行数:99,
示例16: read_xmms_configvoid read_xmms_config() { int count; /*char tempname[100];*/ char *tempname = (char *)malloc(sizeof(char)*100); gchar *path; gchar *ext; mcs_handle_t *config; DPRINT (__DEBUG_GENERAL__,"Starting to read xmms config"); // empty cover search list, the plugin is probably initialized twice by the user g_slist_free (cdcover_config.cover_searchpaths); cdcover_config.cover_searchpaths = NULL; // empty extension search list, the plugin is probably initialized twice by the user g_slist_free (cdcover_config.cover_extensions); cdcover_config.cover_extensions = NULL; config = aud_cfg_db_open (); if (config) { // Window position aud_cfg_db_get_bool (config,PLUGIN_NAME,"savewindowpos",&cdcover_config.save_window_pos); aud_cfg_db_get_int (config,PLUGIN_NAME,"windowposx",&cdcover_config.winpos_x); aud_cfg_db_get_int (config,PLUGIN_NAME,"windowposy",&cdcover_config.winpos_y); // Aspect ratio aud_cfg_db_get_bool (config,PLUGIN_NAME,"aspectratio",&cdcover_config.preserve_aspectratio); // Skin if (!aud_cfg_db_get_string (config,PLUGIN_NAME,"skinpath",&cdcover_config.skin_path)) { cdcover_config.skin_path = NULL; } // Read in the paths sprintf (tempname,"path1"); count=1; while (aud_cfg_db_get_string (config,PLUGIN_NAME,tempname,&path)) { // save the pointer to this resource string in the list cdcover_config.cover_searchpaths = g_slist_append (cdcover_config.cover_searchpaths,path); //printf("Got path '%s' with var %s/n", path, tempname); // construct next path variable count++; sprintf (tempname,"path%d",count); } // Where we able to read any search paths ? if (g_slist_length(cdcover_config.cover_searchpaths)==0) { // Some default paths to start with // Allocate memory, so we can free it on shutdown //printf("No paths found, populating with defaults/n"); gchar *path1 = g_strconcat ("?PATH?/cover.jpg",NULL); gchar *path2 = g_strconcat ("?PATH?/?BASE?.jpg",NULL); gchar *path3 = g_strconcat ("?PATH?/media/?FILENAME?.jpg",NULL); gchar *path4 = g_strconcat ("?PATH?/*.jpg",NULL); cdcover_config.cover_searchpaths = g_slist_append (cdcover_config.cover_searchpaths,path1); cdcover_config.cover_searchpaths = g_slist_append (cdcover_config.cover_searchpaths,path2); cdcover_config.cover_searchpaths = g_slist_append (cdcover_config.cover_searchpaths,path3); cdcover_config.cover_searchpaths = g_slist_append (cdcover_config.cover_searchpaths,path4); } // Read in the extensions sprintf (tempname,"ext1"); count=1; while (aud_cfg_db_get_string (config,PLUGIN_NAME,tempname,&ext)) { // save the pointer to this resource string in the list cdcover_config.cover_extensions = g_slist_append (cdcover_config.cover_extensions,ext); //printf("Got ext '%s' with var %s/n", ext, tempname); // construct next path variable count++; sprintf (tempname,"ext%d",count); } // Were we able to read any extensions? if (g_slist_length(cdcover_config.cover_extensions)==0) { // Some default extensions to start with // Allocate memory, so we can free it on shutdown //printf("No extensions found, populating with defaults/n"); gchar *ext1 = g_strconcat ("png",NULL); gchar *ext2 = g_strconcat ("jpg",NULL); gchar *ext3 = g_strconcat ("gif",NULL); cdcover_config.cover_extensions = g_slist_append(cdcover_config.cover_extensions,ext1); cdcover_config.cover_extensions = g_slist_append(cdcover_config.cover_extensions,ext2); cdcover_config.cover_extensions = g_slist_append(cdcover_config.cover_extensions,ext3); } // Free config handle aud_cfg_db_close (config); } else { DPRINT (__DEBUG_GENERAL__,"Cannot open config file"); }}
开发者ID:apocalyptech,项目名称:audacious-cdcover,代码行数:89,
示例17: ProcessShortMidiMessageMMRESULTProcessShortMidiMessage( DeviceInfo* device_info, DWORD message){ DWORD status; DWORD category; DWORD channel; DWORD data1, data2; status = message & 0x000000FF; /* Deal with running status */ if ( status < MIDI_NOTE_OFF ) { status = device_info->running_status; } /* Ensure the status is sane! */ if ( status < MIDI_NOTE_OFF ) { /* It's garbage, ignore it */ return MMSYSERR_NOERROR; } /* Figure out the message category and channel */ category = status & 0xF0; channel = status & 0x0F; /* we don't use this */ data1 = (message & 0x0000FF00) >> 8; data2 = (message & 0x00FF0000) >> 16; DPRINT("0x%x, %d, %d/n", (int) status, (int) data1, (int) data2); /* Filter drums (which are *usually* on channel 10) */ if ( channel == 10 ) { return MMSYSERR_NOERROR; } /* Pass to the appropriate message handler */ switch ( category ) { case MIDI_NOTE_ON : { PlayNote(device_info, data1, data2); break; } case MIDI_NOTE_OFF : { StopNote(device_info, data1); break; } } return MMSYSERR_NOERROR;}
开发者ID:Moteesh,项目名称:reactos,代码行数:63,
示例18: pv_deletePlayer/*-------------------------------------------------------------------------- Process a network message generated by this module on another computer. Note: player deletion should be noticed by some other handler, and should cause a call to pv_deletePlayer(). Large variables will be handled as follows: The buffer is broken into pieces. The first piece is sent with tag pv_PLAYERDATA_INITIAL_PACKET_ID and has a header structure describing the length, owner, and key of the incoming variables. Subsequent pieces are sent with tag pv_PLAYERDATA_BODY_PACKET_ID, and lack headers. When a first piece comes in, it goes into a holding area for that source; When middle or last pieces come in, they are appended to the holding area; When a last piece comes in, the holding area is copied to the real variable area, and the user code is informed. On success, if not the final packet, Returns dp_RES_EMPTY. else, Returns dp_RES_OK, and places a tagged dp_user_playerData_packet_t in buffer.--------------------------------------------------------------------------*/dp_result_t pv_handlePacket(pv_t *pv, size_t len, void *buf){ dp_packetType_t *tag = (dp_packetType_t *)buf; pv_peer_t *peer; pv_var_t *pvar; dp_result_t err; dpid_t id;#ifdef DPRINTBUFS DPRINT(("pv_handlePacket(pv, %d, ", len)); dprint_buf(buf, len);#endif if (!pv) return dp_RES_BUG; if (*tag == pv_PLAYERDATA_INITIAL_PACKET_ID) { pv_playerData_initial_packet_t *body = (pv_playerData_initial_packet_t *)((char *)buf + sizeof(dp_packetType_t)); void *payload = ((char *)body) + sizeof(pv_playerData_initial_packet_t); size_t datalen = len - sizeof(dp_packetType_t) - sizeof(pv_playerData_initial_packet_t); if (datalen < 1 || datalen > pv_PLAYERDATA_INITIAL_MAXLEN) return dp_RES_BUG; /* call dpSwapPvUpdateInitial to byte swap body */ dpSwapPvUpdateInitial(body); id = body->id; /* Locate the sender's holding area and check for sanity. */ peer = (pv_peer_t *)assoctab_subscript(pv->peers, id); if (!peer) { /* No peer yet. Create one. Hope we can trust id. */ peer = pv_addPlayer(pv, id); if (!peer) { DPRINT(("pv_handlePacket: pv_addPlayer returns NULL/n")); return dp_RES_NOMEM; } } pvar = &peer->incoming; if (peer->allocated < body->len) { void *p = dp_REALLOC(pvar->buf, body->len); if (!p) return dp_RES_NOMEM; pvar->buf = p; peer->allocated = body->len; } /* Clear the holding area & copy this in. */ pvar->key = body->key; pvar->flags = body->flags; pvar->len = body->len; pvar->crc = body->crc; memcpy(pvar->type, body->type, sizeof(pvar->type)); memcpy(pvar->buf, payload, datalen); pvar->offset = datalen; DPRINT(("pv_handlePacket: after 1st packet, offset is %d, len is %d/n", pvar->offset, pvar->len)); } else if (*tag == pv_PLAYERDATA_BODY_PACKET_ID) { pv_playerData_body_packet_t *body = (pv_playerData_body_packet_t *)((char *)buf + sizeof(dp_packetType_t)); void *payload = ((char *)body) + sizeof(pv_playerData_body_packet_t); size_t datalen = len - sizeof(dp_packetType_t) - sizeof(pv_playerData_body_packet_t); if (datalen < 1 || datalen > pv_PLAYERDATA_BODY_MAXLEN) { DPRINT(("pv_handlePacket: datalen/n")); return dp_RES_BUG; } /* call dpSwapPvUpdate to byte swap body */ dpSwapPvUpdate(body); id = body->id; /* Locate the sender's holding area and check for sanity. */ peer = (pv_peer_t *)assoctab_subscript(pv->peers, id); if (!peer) { DPRINT(("pv_handlePacket: no variables for player %d/n", id)); return dp_RES_BAD; } pvar = &peer->incoming; if (peer->allocated < pvar->offset + datalen) { DPRINT(("pv_handlePacket: allocated %d need %d + %d/n", peer->allocated, pvar->offset, datalen));//.........这里部分代码省略.........
开发者ID:jleclanche,项目名称:darkdust-ctp2,代码行数:101,
示例19: ProcessLongMidiMessageMMRESULTProcessLongMidiMessage( DeviceInfo* device_info, MIDIHDR* header){ unsigned int index = 0; UCHAR* midi_bytes = (UCHAR*) header->lpData; unsigned int msg_index = 0; UCHAR msg[3]; /* Initialize the buffer */ msg[0] = msg[1] = msg[2] = 0; if ( ! ( header->dwFlags & MHDR_PREPARED ) ) { DPRINT("Not prepared!/n"); return MIDIERR_UNPREPARED; } DPRINT("Processing %d bytes of MIDI/n", (int) header->dwBufferLength); while ( index < header->dwBufferLength ) { /* New status byte? ( = new event) */ if ( midi_bytes[index] & 0x80 ) { DWORD short_msg; /* Deal with the existing event */ if ( msg[0] & 0x80 ) { short_msg = PACK_MIDI(msg[0], msg[1], msg[2]); DPRINT("Complete msg is 0x%x %d %d/n", (int) msg[0], (int) msg[1], (int) msg[2]); ProcessShortMidiMessage(device_info, short_msg); } /* Set new running status and start recording the event */ DPRINT("Set new running status/n"); device_info->running_status = midi_bytes[index]; msg[0] = midi_bytes[index]; msg_index = 1; } /* Unexpected data byte? ( = re-use previous status) */ else if ( msg_index == 0 ) { if ( device_info->running_status & 0x80 ) { DPRINT("Retrieving running status/n"); msg[0] = device_info->running_status; msg[1] = midi_bytes[index]; msg_index = 2; } else DPRINT("garbage/n"); } /* Expected data ( = append to message until buffer full) */ else { DPRINT("Next byte.../n"); msg[msg_index] = midi_bytes[index]; msg_index ++; if ( msg_index > 2 ) { DWORD short_msg; short_msg = PACK_MIDI(msg[0], msg[1], msg[2]); DPRINT("Complete msg is 0x%x %d %d/n", (int) msg[0], (int) msg[1], (int) msg[2]); ProcessShortMidiMessage(device_info, short_msg); /* Reinit */ msg_index = 0; msg[0] = msg[1] = msg[2] = 0; } } index ++; } /* We're meant to clear MHDR_DONE and set MHDR_INQUEUE but since we deal with everything here and now we might as well just say so. */ header->dwFlags |= MHDR_DONE; header->dwFlags &= ~ MHDR_INQUEUE; DPRINT("Success? %d/n", CallClient(the_device, MOM_DONE, (DWORD_PTR) header, 0)); return MMSYSERR_NOERROR;}
开发者ID:Moteesh,项目名称:reactos,代码行数:96,
示例20: pv_peer_thaw/*----------------------------------------------------------------------- Restore the state of a pv_peer_t from disk and add it to the pv_t.-----------------------------------------------------------------------*/static dp_result_t pv_peer_thaw(pv_t *pv, FILE *fp){ pv_peer_t *peer; int i; short dirty; unsigned long n_vars; long sig; dpid_t id; dp_result_t err; /* Header */ if ((fread(&sig, sizeof(sig), 1, fp) != 1) || (fread(&dirty, sizeof(dirty), 1, fp) != 1) || (fread(&id, sizeof(id), 1, fp) != 1) || (fread(&n_vars, sizeof(n_vars), 1, fp) != 1)) { DPRINT(("pv_peer_thaw: can't read header/n")); return dp_RES_EMPTY; } if (sig != 0x12340009) { DPRINT(("pv_peer_thaw: bad sig/n")); return dp_RES_BAD; } if (n_vars > dp_PLAYERDATA_NKEYS_MAX) { DPRINT(("pv_peer_thaw: bad n_vars %d/n", n_vars)); return dp_RES_BAD; } if ((dirty != FALSE) && (dirty != TRUE)) { DPRINT(("pv_peer_thaw: bad dirty/n")); return dp_RES_BAD; } DPRINT(("pv_peer_thaw: id %d, pv %p, n_vars %d/n", id, pv, n_vars)); peer = pv_addPlayer(pv, id); if (!peer) return dp_RES_NOMEM; /* Body */ for (i=0; i < n_vars; i++) { /* Grab the variable */ pv_var_t var, *pvar; err = pv_var_thaw(&var, fp); if (err != dp_RES_OK) { DPRINT(("pv_peer_thaw: pv_var_thaw returns %d/n", err)); return err; } DPRINT(("pv_peer_thaw: peer %d, var %d, len %d/n", id, var.key, var.len)); /* Add it to the peer's var table. */ pvar = (pv_var_t *)assoctab_subscript_grow(peer->vars, var.key); if (!pvar) { DPRINT(("pv_peer_thaw: can't grow player %d's vars[%d]!/n", id, var.key)); return dp_RES_NOMEM; } /* Delete old value from heap if present */ if (pvar->buf) dp_FREE(pvar->buf); /* Copy variable at last. */ *pvar = var; } /* Ditch the incoming.buf allocated by pv_addPlayer, as pv_var_thaw * allocates its own. */ if (peer->incoming.buf) dp_FREE(peer->incoming.buf); DPRINT(("pv_peer_thaw: thawing incoming/n")); err = pv_var_thaw(&peer->incoming, fp); if (err != dp_RES_OK) return err; peer->allocated = peer->incoming.len; peer->dirty = dirty; /* No trailer */ return dp_RES_OK;}
开发者ID:jleclanche,项目名称:darkdust-ctp2,代码行数:78,
示例21: modMessageMMRESULTFAR PASCALmodMessage( UINT device_id, UINT message, DWORD_PTR private_data, DWORD_PTR parameter1, DWORD_PTR parameter2){ switch ( message ) { case MODM_GETNUMDEVS : { /* Only one internal PC speaker device (and even that's too much) */ DPRINT("MODM_GETNUMDEVS/n"); return 1; } case MODM_GETDEVCAPS : { DPRINT("MODM_GETDEVCAPS/n"); return GetDeviceCapabilities((MIDIOUTCAPS*) parameter1); } case MODM_OPEN : { DPRINT("MODM_OPEN/n"); return OpenDevice((DeviceInfo**) private_data, (MIDIOPENDESC*) parameter1, parameter2); } case MODM_CLOSE : { DPRINT("MODM_CLOSE/n"); return CloseDevice((DeviceInfo*) private_data); } case MODM_DATA : { return ProcessShortMidiMessage((DeviceInfo*) private_data, parameter1); } case MODM_PREPARE : { /* We don't bother with this */ MIDIHDR* hdr = (MIDIHDR*) parameter1; hdr->dwFlags |= MHDR_PREPARED; return MMSYSERR_NOERROR; } case MODM_UNPREPARE : { MIDIHDR* hdr = (MIDIHDR*) parameter1; hdr->dwFlags &= ~MHDR_PREPARED; return MMSYSERR_NOERROR; } case MODM_LONGDATA : { DPRINT("LONGDATA/n"); return ProcessLongMidiMessage((DeviceInfo*) private_data, (MIDIHDR*) parameter1); } case MODM_RESET : { /* TODO */ break; } } DPRINT("Not supported %d/n", message); return MMSYSERR_NOTSUPPORTED;}
开发者ID:Moteesh,项目名称:reactos,代码行数:76,
示例22: iprop_full_resync_1kdb_fullresync_result_t *iprop_full_resync_1( /* LINTED */ void *argp, struct svc_req *rqstp){ static kdb_fullresync_result_t ret; char tmpf[MAX_FILENAME] = {0}; char ubuf[MAX_FILENAME + sizeof (KDB5_UTIL_DUMP_STR)] = {0}; char clhost[MAXHOSTNAMELEN] = {0}; int pret, fret; kadm5_server_handle_t handle = global_server_handle; OM_uint32 min_stat; gss_name_t name = NULL; char *client_name = NULL, *service_name = NULL; char *whoami = "iprop_full_resync_1"; /* default return code */ ret.ret = UPDATE_ERROR; if (!handle) { krb5_klog_syslog(LOG_ERR, gettext("%s: server handle is NULL"), whoami); goto out; } DPRINT(("%s: start/n", whoami)); if (setup_gss_names(rqstp, &client_name, &service_name) < 0) { krb5_klog_syslog(LOG_ERR, gettext("%s: setup_gss_names failed"), whoami); goto out; } DPRINT(("%s: clprinc=`%s'/n/tsvcprinc=`%s'/n", whoami, client_name, service_name)); if (!(name = get_clnt_name(rqstp))) { krb5_klog_syslog(LOG_ERR, gettext("%s: Couldn't obtain client's name"), whoami); goto out; } if (!kadm5int_acl_check(handle->context, name, ACL_IPROP, NULL, NULL)) { ret.ret = UPDATE_PERM_DENIED; audit_kadmind_unauth(rqstp->rq_xprt, l_port, whoami, "<null>", client_name); krb5_klog_syslog(LOG_NOTICE, LOG_UNAUTH, whoami, "<null>", client_name, service_name, client_addr(rqstp, abuf)); goto out; } if (!getclhoststr(client_name, clhost, sizeof (clhost))) { krb5_klog_syslog(LOG_ERR, gettext("%s: getclhoststr failed"), whoami); goto out; } /* * construct db dump file name; kprop style name + clnt fqdn */ (void) strcpy(tmpf, "/var/krb5/slave_datatrans_"); if (strlcat(tmpf, clhost, sizeof (tmpf)) >= sizeof (tmpf)) { krb5_klog_syslog(LOG_ERR, gettext("%s: db dump file name too long; max length=%d"), whoami, (sizeof (tmpf) - 1)); goto out; } /* * note the -i; modified version of kdb5_util dump format * to include sno (serial number) */ if (strlcpy(ubuf, KDB5_UTIL_DUMP_STR, sizeof (ubuf)) >= sizeof (ubuf)) { goto out; } if (strlcat(ubuf, tmpf, sizeof (ubuf)) >= sizeof (ubuf)) { krb5_klog_syslog(LOG_ERR, gettext("%s: kdb5 util dump string too long; max length=%d"), whoami, (sizeof (ubuf) - 1)); goto out; } /* * Fork to dump the db and xfer it to the slave. * (the fork allows parent to return quickly and the child * acts like a callback to the slave).//.........这里部分代码省略.........
开发者ID:AlainODea,项目名称:illumos-gate,代码行数:101,
示例23: DriverProcLONGFAR PASCALDriverProc( DWORD driver_id, HDRVR driver_handle, UINT message, LONG parameter1, LONG parameter2){ switch ( message ) { case DRV_LOAD : DPRINT("DRV_LOAD/n"); the_device = NULL; return 1L; case DRV_FREE : DPRINT("DRV_FREE/n"); return 1L; case DRV_OPEN : DPRINT("DRV_OPEN/n"); InitializeCriticalSection(&device_lock); return 1L; case DRV_CLOSE : DPRINT("DRV_CLOSE/n"); return 1L; case DRV_ENABLE : DPRINT("DRV_ENABLE/n"); return 1L; case DRV_DISABLE : DPRINT("DRV_DISABLE/n"); return 1L; /* We don't provide configuration capabilities. This used to be for things like I/O port, IRQ, DMA settings, etc. */ case DRV_QUERYCONFIGURE : DPRINT("DRV_QUERYCONFIGURE/n"); return 0L; case DRV_CONFIGURE : DPRINT("DRV_CONFIGURE/n"); return 0L; case DRV_INSTALL : DPRINT("DRV_INSTALL/n"); return DRVCNF_RESTART; }; DPRINT("???/n"); return DefDriverProc(driver_id, driver_handle, message, parameter1, parameter2);}
开发者ID:Moteesh,项目名称:reactos,代码行数:63,
示例24: MPU401DeviceControlstatic NTSTATUS NTAPIMPU401DeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)/* * FUNCTION: Handles user mode requests * ARGUMENTS: * DeviceObject = Device for request * Irp = I/O request packet describing request * RETURNS: Success or failure */{ PIO_STACK_LOCATION Stack; PDEVICE_EXTENSION DeviceExtension; ULONG ByteCount; PUCHAR Data; DPRINT("MPU401DeviceControl() called!/n"); DeviceExtension = DeviceObject->DeviceExtension; Stack = IoGetCurrentIrpStackLocation(Irp); DPRINT("Control code %d [0x%x]/n", Stack->Parameters.DeviceIoControl.IoControlCode, Stack->Parameters.DeviceIoControl.IoControlCode); switch(Stack->Parameters.DeviceIoControl.IoControlCode) { case IOCTL_MIDI_PLAY : { DPRINT("Received IOCTL_MIDI_PLAY/n"); Data = (PUCHAR) Irp->AssociatedIrp.SystemBuffer; DPRINT("Sending %d bytes of MIDI data to 0x%d:/n", Stack->Parameters.DeviceIoControl.InputBufferLength, DeviceExtension->Port); for (ByteCount = 0; ByteCount < Stack->Parameters.DeviceIoControl.InputBufferLength; ByteCount ++) { DPRINT("0x%x ", Data[ByteCount]); MPU401_WRITE_BYTE(DeviceExtension->Port, Data[ByteCount]);// if (WaitToSend(MPU401_PORT))// MPU401_WRITE_DATA(MPU401_PORT, Data[ByteCount]); } Irp->IoStatus.Status = STATUS_SUCCESS; IoCompleteRequest(Irp, IO_NO_INCREMENT); return(STATUS_SUCCESS); } } return(STATUS_SUCCESS);/* DeviceExtension = DeviceObject->DeviceExtension; Stack = IoGetCurrentIrpStackLocation(Irp); BeepParam = (PBEEP_SET_PARAMETERS)Irp->AssociatedIrp.SystemBuffer; Irp->IoStatus.Information = 0; if (Stack->Parameters.DeviceIoControl.IoControlCode != IOCTL_BEEP_SET) { Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; IoCompleteRequest(Irp, IO_NO_INCREMENT); return(STATUS_NOT_IMPLEMENTED); } if ((Stack->Parameters.DeviceIoControl.InputBufferLength != sizeof(BEEP_SET_PARAMETERS)) || (BeepParam->Frequency < BEEP_FREQUENCY_MINIMUM) || (BeepParam->Frequency > BEEP_FREQUENCY_MAXIMUM)) { Irp->IoStatus.Status = STATUS_INVALID_PARAMETER; IoCompleteRequest(Irp, IO_NO_INCREMENT); return(STATUS_INVALID_PARAMETER); } DueTime.QuadPart = 0;*/ /* do the beep!! *//* DPRINT("Beep:/n Freq: %lu Hz/n Dur: %lu ms/n", pbsp->Frequency, pbsp->Duration); if (BeepParam->Duration >= 0) { DueTime.QuadPart = (LONGLONG)BeepParam->Duration * -10000; KeSetTimer(&DeviceExtension->Timer, DueTime, &DeviceExtension->Dpc); HalMakeBeep(BeepParam->Frequency); DeviceExtension->BeepOn = TRUE; KeWaitForSingleObject(&DeviceExtension->Event, Executive, KernelMode, FALSE, NULL); } else if (BeepParam->Duration == (DWORD)-1)//.........这里部分代码省略.........
开发者ID:hoangduit,项目名称:reactos,代码行数:101,
示例25: process/********************************************************************** * SmCreateUserProcess/5 * * DESCRIPTION * * ARGUMENTS * ImagePath: absolute path of the image to run; * CommandLine: arguments and options for ImagePath; * Flags: Wait flag: Set for boot time processes and unset for * subsystems bootstrapping; * 1Mb reserve flag: Set for subsystems, unset for everything* else * Timeout: optional: used if WaitForIt==TRUE; * ProcessHandle: optional: a duplicated handle for the child process (storage provided by the caller). * * RETURN VALUE * NTSTATUS: * */NTSTATUS NTAPISmCreateUserProcess (LPWSTR ImagePath, LPWSTR CommandLine, ULONG Flags, PLARGE_INTEGER Timeout OPTIONAL, PRTL_USER_PROCESS_INFORMATION UserProcessInfo OPTIONAL){ UNICODE_STRING ImagePathString = { 0, 0, NULL }; UNICODE_STRING CommandLineString = { 0, 0, NULL }; UNICODE_STRING SystemDirectory = { 0, 0, NULL }; PRTL_USER_PROCESS_PARAMETERS ProcessParameters = NULL; RTL_USER_PROCESS_INFORMATION ProcessInfo = {0}; PRTL_USER_PROCESS_INFORMATION pProcessInfo = & ProcessInfo; NTSTATUS Status = STATUS_SUCCESS; DPRINT("SM: %s called/n", __FUNCTION__); if (NULL != UserProcessInfo) { pProcessInfo = UserProcessInfo; } RtlInitUnicodeString (& ImagePathString, ImagePath); RtlInitUnicodeString (& CommandLineString, CommandLine); SystemDirectory.MaximumLength = (wcslen(SharedUserData->NtSystemRoot) * sizeof(WCHAR)) + sizeof(szSystemDirectory); SystemDirectory.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), 0, SystemDirectory.MaximumLength); if (SystemDirectory.Buffer == NULL) { Status = STATUS_NO_MEMORY; DPRINT1("SM: %s: Allocating system directory string failed (Status=0x%08lx)/n", __FUNCTION__, Status); return Status; } Status = RtlAppendUnicodeToString(& SystemDirectory, SharedUserData->NtSystemRoot); if (!NT_SUCCESS(Status)) { goto FailProcParams; } Status = RtlAppendUnicodeToString(& SystemDirectory, szSystemDirectory); if (!NT_SUCCESS(Status)) { goto FailProcParams; } Status = RtlCreateProcessParameters(& ProcessParameters, & ImagePathString, NULL, & SystemDirectory, & CommandLineString, SmSystemEnvironment, NULL, NULL, NULL, NULL); RtlFreeHeap(RtlGetProcessHeap(), 0, SystemDirectory.Buffer); if (!NT_SUCCESS(Status)) {FailProcParams: DPRINT1("SM: %s: Creating process parameters failed (Status=0x%08lx)/n", __FUNCTION__, Status); return Status; } /* Reserve lower 1Mb, if requested */ if (Flags & SM_CREATE_FLAG_RESERVE_1MB) ProcessParameters->Flags |= RTL_USER_PROCESS_PARAMETERS_RESERVE_1MB; /* Create the user process *///.........这里部分代码省略.........
开发者ID:HBelusca,项目名称:NasuTek-Odyssey,代码行数:101,
示例26: MPU401Unloadstatic VOID NTAPIMPU401Unload(PDRIVER_OBJECT DriverObject){ DPRINT("MPU401Unload() called!/n");}
开发者ID:hoangduit,项目名称:reactos,代码行数:5,
示例27: WSAStartup/* * @implemented */INTWINAPIWSAStartup(IN WORD wVersionRequested, OUT LPWSADATA lpWSAData){ WORD VersionReturned = 0; DWORD ErrorCode = ERROR_SUCCESS; PWSPROCESS CurrentProcess; DPRINT("WSAStartup: %wx/n", wVersionRequested); /* Make sure that we went through DLL Init */ if (!WsDllHandle) return WSASYSNOTREADY; /* Check which version is being requested */ switch (LOBYTE(wVersionRequested)) { case 0: /* We don't support this unknown version */ ErrorCode = WSAVERNOTSUPPORTED; break; case 1: /* We support only 1.0 and 1.1 */ if (HIBYTE(wVersionRequested) == 0) { /* Caller wants 1.0, return it */ VersionReturned = wVersionRequested; } else { /* The only other version we support is 1.1 */ VersionReturned = MAKEWORD(1, 1); } break; case 2: /* We support only 2.0, 2.1 and 2.2 */ if (HIBYTE(wVersionRequested) <= 2) { /* Caller wants 2.0-2.2, return it */ VersionReturned = MAKEWORD(2, HIBYTE(wVersionRequested)); } else { /* The highest version we support is 2.2 */ VersionReturned = MAKEWORD(2, 2); } break; default: /* Return 2.2 */ VersionReturned = MAKEWORD(2, 2);; break; } /* Return the Version Requested, unless error */ lpWSAData->wVersion = VersionReturned; /* We support Winsock 2.2 */ lpWSAData->wHighVersion = MAKEWORD(2,2); lstrcpy(lpWSAData->szDescription, "WinSock 2.0"); lstrcpy(lpWSAData->szSystemStatus, "Running"); /* * On Winsock 1, the following values are returned. * Taken straight from a Winsock Test app on Windows. */ if (LOBYTE(wVersionRequested) == 1) { lpWSAData->iMaxSockets = 32767; lpWSAData->iMaxUdpDg = 65467; } else { lpWSAData->iMaxSockets = 0; lpWSAData->iMaxUdpDg = 0; } /* Enter the startup synchronization lock */ WsStartupLock(); /* Now setup all our objects */ while (TRUE) { /* Make sure we don't already have a process */ CurrentProcess = WsGetProcess(); if (CurrentProcess) break; /* Setup the process object support */ ErrorCode = WsProcStartup(); if (ErrorCode != ERROR_SUCCESS) break; /* Setup the process object support */ ErrorCode = WsSockStartup(); if (ErrorCode != ERROR_SUCCESS) break;//.........这里部分代码省略.........
开发者ID:RPG-7,项目名称:reactos,代码行数:101,
示例28: BBInitDynamicData/// <summary>/// Initialize dynamic data./// </summary>/// <param name="pData">Data to initialize</param>/// <returns>Status code</returns>NTSTATUS BBInitDynamicData( IN OUT PDYNAMIC_DATA pData ){ NTSTATUS status = STATUS_SUCCESS; RTL_OSVERSIONINFOEXW verInfo = { 0 }; ULONG buildNo = 0; if (pData == NULL) return STATUS_INVALID_ADDRESS; RtlZeroMemory( pData, sizeof( DYNAMIC_DATA ) ); verInfo.dwOSVersionInfoSize = sizeof( verInfo ); status = RtlGetVersion( (PRTL_OSVERSIONINFOW)&verInfo ); if (status == STATUS_SUCCESS) { ULONG ver_short = (verInfo.dwMajorVersion << 8) | (verInfo.dwMinorVersion << 4) | verInfo.wServicePackMajor; pData->ver = (WinVer)ver_short; // Get kernel build number status = BBGetBuildNO( &buildNo ); // Validate current driver version pData->correctBuild = TRUE; #if defined(_WIN7_) if (ver_short != WINVER_7 && ver_short != WINVER_7_SP1) return STATUS_NOT_SUPPORTED; if(ver_short == WINVER_7_SP1 && buildNo != 18798) pData->correctBuild = FALSE; #elif defined(_WIN8_) if (ver_short != WINVER_8) return STATUS_NOT_SUPPORTED; #elif defined (_WIN81_) if (ver_short != WINVER_81) return STATUS_NOT_SUPPORTED; if (buildNo != 17328) pData->correctBuild = FALSE; #elif defined (_WIN10_) if (ver_short != WINVER_10) return STATUS_NOT_SUPPORTED; if (verInfo.dwBuildNumber != 9926) pData->correctBuild = FALSE; #endif DPRINT( "BlackBone: OS version %d.%d.%d.%d.%d.%d - 0x%x/n", verInfo.dwMajorVersion, verInfo.dwMinorVersion, verInfo.dwBuildNumber, verInfo.wServicePackMajor, verInfo.wServicePackMinor, buildNo, ver_short ); switch (ver_short) { // Windows 7 // Windows 7 SP1, build 18798 case WINVER_7: case WINVER_7_SP1: pData->KExecOpt = 0x0D2; pData->Protection = 0x43C; // Bitfield, bit index - 0xB pData->ObjTable = 0x200; pData->VadRoot = 0x448; pData->NtProtectIndex = 0x04D; pData->NtCreateThdIndex = 0x0A5; pData->NtTermThdIndex = 0x50; pData->PrevMode = 0x1F6; pData->ExitStatus = 0x380; pData->MiAllocPage = (ver_short == WINVER_7_SP1) ? 0 : 0; pData->ExRemoveTable = (ver_short == WINVER_7_SP1) ? 0x32A870 : 0x32D404; break; // Windows 8 case WINVER_8: pData->KExecOpt = 0x1B7; pData->Protection = 0x648; pData->ObjTable = 0x408; pData->VadRoot = 0x590; pData->NtProtectIndex = 0x04E; pData->NtCreateThdIndex = 0x0AF; pData->NtTermThdIndex = 0x51; pData->PrevMode = 0x232; pData->ExitStatus = 0x450; pData->MiAllocPage = 0x3AF374; pData->ExRemoveTable = 0x487518; break; // Windows 8.1, build 17328 case WINVER_81: pData->KExecOpt = 0x1B7; pData->Protection = 0x67A; pData->ObjTable = 0x408; pData->VadRoot = 0x5D8;//.........这里部分代码省略.........
开发者ID:Retord,项目名称:Blackbone,代码行数:101,
示例29: IopGetRelatedDevicestatic NTSTATUSIopGetRelatedDevice(PPLUGPLAY_CONTROL_RELATED_DEVICE_DATA RelatedDeviceData){ UNICODE_STRING RootDeviceName; PDEVICE_OBJECT DeviceObject = NULL; PDEVICE_NODE DeviceNode = NULL; PDEVICE_NODE RelatedDeviceNode; UNICODE_STRING TargetDeviceInstance; NTSTATUS Status = STATUS_SUCCESS; ULONG Relation = 0; ULONG MaximumLength = 0; DPRINT("IopGetRelatedDevice() called/n"); DPRINT("Device name: %wZ/n", &RelatedDeviceData->TargetDeviceInstance); Status = IopCaptureUnicodeString(&TargetDeviceInstance, &RelatedDeviceData->TargetDeviceInstance); if (!NT_SUCCESS(Status)) { return Status; } _SEH2_TRY { Relation = RelatedDeviceData->Relation; MaximumLength = RelatedDeviceData->RelatedDeviceInstanceLength; ProbeForWrite(RelatedDeviceData->RelatedDeviceInstance, MaximumLength, sizeof(WCHAR)); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { if (TargetDeviceInstance.Buffer != NULL) { ExFreePool(TargetDeviceInstance.Buffer); } _SEH2_YIELD(return _SEH2_GetExceptionCode()); } _SEH2_END; RtlInitUnicodeString(&RootDeviceName, L"HTREE//ROOT//0"); if (RtlEqualUnicodeString(&TargetDeviceInstance, &RootDeviceName, TRUE)) { DeviceNode = IopRootDeviceNode; if (TargetDeviceInstance.Buffer != NULL) { ExFreePool(TargetDeviceInstance.Buffer); } } else { /* Get the device object */ DeviceObject = IopGetDeviceObjectFromDeviceInstance(&TargetDeviceInstance); if (TargetDeviceInstance.Buffer != NULL) { ExFreePool(TargetDeviceInstance.Buffer); } if (DeviceObject == NULL) return STATUS_NO_SUCH_DEVICE; DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode; } switch (Relation) { case PNP_GET_PARENT_DEVICE: RelatedDeviceNode = DeviceNode->Parent; break; case PNP_GET_CHILD_DEVICE: RelatedDeviceNode = DeviceNode->Child; break; case PNP_GET_SIBLING_DEVICE: RelatedDeviceNode = DeviceNode->Sibling; break; default: if (DeviceObject != NULL) { ObDereferenceObject(DeviceObject); } return STATUS_INVALID_PARAMETER; } if (RelatedDeviceNode == NULL) { if (DeviceObject) { ObDereferenceObject(DeviceObject); } return STATUS_NO_SUCH_DEVICE; } if (RelatedDeviceNode->InstancePath.Length > MaximumLength) {//.........这里部分代码省略.........
开发者ID:GYGit,项目名称:reactos,代码行数:101,
注:本文中的DPRINT函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ DPRINT2函数代码示例 C++ DPR函数代码示例 |